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:
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.
 
Vieleicht so...
Code:
SELECT    *
FROM    schueler
WHERE (    note = .$note
OR        .$note = ''
OR        .$note IS NULL )
AND    (    name = .$name
OR        .$name = ''
OR        .$name IS NULL )
 
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.
 
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?
 
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.
 
...oder ich lass den abfragestring einfach von php zusammensetzen. mit substr. replace dann den passenden teil einfügen. das könnte passen;)
 
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:
Zurück
Oben