• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Mehrere Eingabegefelder in PHP, verbunden mit MySQL

byron1778

Hacker
Hallo Forum,

mich würde folgendes interessieren.

Angenommen ich habe 10 Eingabefelder, wobei keines als Pflichtfeld definiert ist.
Abhängig von der Eingabe in jedes Feld gibt es nun unterschiedliche Suchfunktionen in der MySQL Datenbank.

So meine ich es:

Feld 1 belegt
Feld 2
Feld 3 belegt

If (feld 1 && feld 2) { ...} oder

Feld 1
Feld 2 belegt
Feld 3 belegt

if (feld 1 && feld 3) {

Nur gibt es jetzt bei 10 Feldern 3 628 800 verschiedene Möglichkeiten nach etwas zu suchen.

Gibt es irgendeine spezielle Möglichkeit nicht alles mit einer if - Abfrage zu lösen?

Also so eine Art "matching" über alles laufen zu lassen?

Hoffentlich habe ich es halbwegs erklären können, was ich meinte :)

Danke schon einmal für jede Hilfe!

Mfg
Byron
 

Snubnose

Hacker
erzähl mal bitte genauer wie die Datenbank aussieht, wie deine Auswahlfelder aussehen und wie/was du Suchen willst
 
OP
B

byron1778

Hacker
Die Felder wären:
Firma
Grund
Lösung
Weitergeleitet an:
Datum der Bearbeitung:
Zeitraum:

Es kann nun passieren, dass jemand Firma und Grund ausfüllt, oder auch Lösung und Zeitraum, vielleicht auch alle zusammen.

Und da würden sich ja dann die Abfragen in der Mysql Datenbank jeweils ändern.

Ich habe nun gelesen, dass es mit einem select * from intern where match(firma, grund, usf) against ('Abfrage') funktioniert.

Ist es das, nach was ich suche?
 
Hi.

Ich hab ein ähliches Problem letztens wie folgt gelöst:

Code:
$sql = "SELECT  * FROM <tabname> WHERE ( ";             // SQL Statement beginnen
if("" != $feld1)						                      // Für jedes Feld das gesetzt ist
{								                               // einen AND Ausdruck zum WHERE-Teil
	$sql .= "(<feld1_spaltenname> = '".$feld1."') AND "; // hinzufügen.
}
if("" != $feld2)
{
	$sql .= "(<feld2_spaltenname> = '".$feld2."') AND ";
}
.
.
.
if("" != $feld<n>)
{
	$sql .= "(<feld<n>_spaltenname> = '".$feld<n>."') AND ";
}
$sql = substr($sql, 0, strlen($sql)-4).")";			// Letztes (und damit überflüssiges) 
								                            // AND entfernen und Schließende 
								                            // Klammer anhängen.

Mag nicht der eleganteste Weg sein, aber hat seinen Zweck erfüllt.

MfG felloritas.
 

endor

Member
vielleicht noch ein bisschen allgemeiner aber auch nicht so richtig schoen:

Code:
$felder = array ("1" => 'feldname1',
                        "2" => 'feldname2');

foreach ($felder as $key => $value)
{
    $inhalt = $_POST['feld'.$key]; // vorher durchchecken
    if ($inhalt != "") {
        $sql .= "AND (".$value." = "'.$inhalt.'")";
    }
}
 
OP
B

byron1778

Hacker
Danke vielmals für die Hilfe, werde mir die Lösungen am Wochenende praktisch einverleiben.

Mfg
Byron
 
Oben