Datenbankabfrage?

downset04

Erfahrenes Mitglied
Hallo

Ich möchte eine Datenbankabfrage machen blos weiß ich nicht wie das SQL Statement dazu heißt? Ich habe 3 InputFelder die optional auch leer bleiben können. Wie behandle ich die leergebliebenen Felder? Wenn ich zb vorname, nachname u strasse habe ? und zb nur nach nachname suche ? Brauch ich da mehrere SQL STatements?

thx
 
Du kannst natürlich annehmen, dass ein nicht ausgefülltes Feld bedeutet, dass auch in der Datenbank dieses Feld nicht belegt ist. Das ist aber sicher nicht Zweck des Formulars.

Anzunehmen ist, dass ein nicht ausgefülltes Feld das Ergebnis nicht weiter einschränken soll.
Also musst Du die WHERE-Klausel dynamisch zusammen setzen. Wenn das Feld belegt ist, gibt es auch eine einschränkende Bedingung, die mit and verknüpft wird.

Ich mache das meist, indem ich die Felder prüfe und isoliert voneinander die reinen Bedingungen in ein Array schreibe. Ist zum Beispiel das Suchfeld1, welches sich auf Feld1 in der Tabelle bezieht, mit 'EinWort' gefüllt und das Suchfeld2, welches sich auf Feld2 in der Tabelle bezieht, mit 'EinAnderesWort' gefüllt, füge ich dem Array die Strings `Feld1`='EinWort' und `Feld2`='EinAnderesWort' hinzu. Anstatt der hier fixen Suchbegriffe wird natürlich der übergebene Wert aus dem Textfeld genommen.
Das Array wird dann mit implode(' AND ',$dasArray); in einen String umgewandelt, der hinter die WHERE-Klausel gesetzt wird (Beispiel PHP).
Abzufangen ist noch, wenn kein Feld gefüllt wurde. Dazu gibt es zwei Möglichkeiten:
Entweder kann das Array von Anfang an mit dem String 1=1 (oder vergleichbarem, was immer true gibt bzw. false bei Oder-Bedingungen) gefüttert werden oder man prüft, ob man überhaupt ein WHERE zum Query hinzufügen muss (z.B. Array enthält mindestens 1 Element).

Vielleicht konnte ich Dir damit ein paar Anregungen zur Lösung geben.

Gruß hpvw
 
Zurück