Query soll frei suchen falls Variable nicht belegt

Michi_R

Fleissiger Benutzer
Beiträge
81
Hallo,

ich habe in php ein eingabefeld. Gibt der Nutzer dort einen paramter ein, soll mein query nach diesem parameter filtern
also z.b.

Code:
select * from schueler where note=1
//falls im Suchfeld "note" die 1 eingegeben wurde.

Gibt der Benutzer im Suchfeld "note" jedoch nichts ein, sollen alle Schüler angezeigt werden (also unabhängig welchen noten sie haben).

Wenn ich meinen query, der aktuell so aussieht:

Code:
"select * from schueler where note=".$note

lasse, dann gibt er natürlich bei leerem note-Feld nichts aus, weil er schueler sucht, bei denen in der Datenbank bei note kein wert eingetragen ist.

Wie kann man das umsetzen?

Klar könnte man eine if abfrage bauen und abhängig vom eingabeparameter den einen oder den anderen query verwenden. Aber geht da snicht schöner?

Danke!
 
Werbung:

akretschmer

Datenbank-Guru
Beiträge
9.731
Wenn ich meinen query, der aktuell so aussieht:

Code:
"select * from schueler where note=".$note

lasse, dann gibt er natürlich bei leerem note-Feld nichts aus, weil er schueler sucht, bei denen in der Datenbank bei note kein wert eingetragen ist.

Wie kann man das umsetzen?

Klar könnte man eine if abfrage bauen und abhängig vom eingabeparameter den einen oder den anderen query verwenden. Aber geht da snicht schöner?

Danke!

Du kennst den Weg. Entscheide in PHP, nach was Du suchst. Ach ja: select * ist keine gute Idee.
 

ukulele

Datenbank-Guru
Beiträge
4.702
Vieleicht so...
Code:
SELECT    *
FROM    schueler
WHERE (    note = .$note
OR        .$note = ''
OR        .$note IS NULL )
AND    (    name = .$name
OR        .$name = ''
OR        .$name IS NULL )
 

Michi_R

Fleissiger Benutzer
Beiträge
81
Richtig.
Außerdem gibts keine Schuler, die bei note nichts eingetragen haben.
Genau das selbe hab ich beim Feld datum. Gebe ich eins an, soll er nur die mit entsprechendem Datum finden, wenn das feld leer bleibt, soll er das datum bei der abfrage nicht brücksichtigen.
Wie setzt man denn sowas um? evtl stichworte zum googlen würden mir auch reichen. Weiß nur garnicht wie ich anfangen soll.
 

Walter

Administrator
Teammitglied
Beiträge
448
Warum nicht mit einem if in PHP lösen?
Wozu die Datenbank mit etwas quälen das man einfacher in der Applikation lösen kann?
 

Michi_R

Fleissiger Benutzer
Beiträge
81
Naja, ich habe 3 Filter, die jeweils eben einen wert bei der eingabe bekommen können oder nicht. 3x3 macht schon 9 if abfragen, z.b. für alle 3 felder leer, feld 1 leer, feld 2 und 3 mit paramter, feld 1 und 2 leer, feld 3 mit paramter usw usf.
 

Michi_R

Fleissiger Benutzer
Beiträge
81
...oder ich lass den abfragestring einfach von php zusammensetzen. mit substr. replace dann den passenden teil einfügen. das könnte passen;)
 

Michi_R

Fleissiger Benutzer
Beiträge
81
Gibt es denn kein Zeichen, dass für sql sowas wie bliebig heißt?

Also entweder ich habe den fall note=1, dann heißt der query: ...where note=1
oder ich hab keine eingabe, dann würde ich standartmäßig z.b. auf % setzen, aber mit where note=% funktioniert ja leide rnicht. Gibts statt dem % kein Zeichen/Kürzel, dass beliebig bedeutet?
 
Werbung:
Oben