Zur Navigation

SELECT und die Checkboxen

Abfrageproblem

1 Roberto

Hallo

Ich habe ein Formular mit 5 Checkboxen, die man alternativ anklicken kann.
Obwohl z. B. nur 1 Kästchen angeklickt wurde, liefert mir die Datenbank !alle! Datensätze aus. Ist ggf. der Ansatz mit OR falsch?

$var1 = "J";

$sql = "SELECT * FROM tabellex WHERE ((var1 = '$var1') OR (var2 = '$var2') OR (var3 = '$var3') OR (var4 = '$var4') OR (var5 = 'var5'))"

Gruss

30.04.2015 11:30

2 Jörg Kruse

Welche Werte haben den $var2 bis $var5?

Wenn die betreffenden Checkboxen nicht angeklickt wurden, dann sind diese Variablen wohl leer. D.h. dass dann auch alle Datensätze zurückgeliefert werden, bei denen var2 = '' oder var3 = '' etc. Wenn nur nicht leere Werte berücksichtigt werden sollen, sollte die Query eher so ausschauen:

$sql = "
SELECT * FROM tabellex
WHERE (
       (var1 = '$var1' AND var1 != '')
    OR (var2 = '$var2' AND var2 != '')
    OR (var2 = '$var3' AND var3 != '')
    OR (var2 = '$var4' AND var4 != '')
    OR (var2 = '$var5' AND var5 != '')
)";

Wichtig ist zudem, dass $var1 bis $var5 zuvor gefiltert werden, um eine SQL-Injection zu verhindern.

30.04.2015 15:18 | geändert: 30.04.2015 15:19

3 Roberto

Hallo Jörg

Besten Dank für Deinen Beitrag und die Lösung!

Da ich zurzeit 18 Variablen habe, ist das SQL-Kommando auf 895 Zeichen angewachsen! Es arbeitet aber tadellos und schnell. Danke.

Gruss
Walter

01.05.2015 08:58

Zum Schreiben einloggen

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]