Liste, SELECT
-
Grüße,
Ich suche eine bessere, zuverlässigere Lösung für folgendes Problem :
Ich habe 2 Dateien.
1 Formulardatei, in der der Nutzer Länder per checkbox auswählen kann
1 Verarbeitungsdatei, in der entsprechend der ausgewählten Länder Datensätze ausgegeben werdenformular.html :
<form method="POST" action="print.php"> <input type="checkbox" name="land1" value="Deutschland">Deutschland <input type="checkbox" name="land2" value="Australien">Australien <input type="checkbox" name="land3" value="Thailand">Thailand <input type="checkbox" name="land4" value="Niederlande">Niederlande ... </form>
print.php :
$land1 = $_POST["land1"]; $land2 = $_POST["land2"]; $land3 = $_POST["land3"]; $land4 = $_POST["land4"]; $sql = "SELECT * FROM Waren WHERE land IN ('$land1', '$land2', '$land3', '$land4')";
Ich brauche eine bessere Lösung (Alternative zur Lösung mit IN())
-
Was meinst du mit besser/zuverlässiger?
Du erklärst nicht wo genau bei deiner Lösung das Problem liegt.
-
D. h. Wie könnte ich anstelle mit WHERE IN(),
die SQL-Abfrage zusammensetzen. So das Datensätze
entsprechend der ausgewählten checkboxen gezeigt
werden.
-
Es gibt die Möglichkeit den Namen der Checkbochen nicht mit land1 zu belegen sondern land[1]. Dann hast du die Daten schonmal in einem Array aus dem du die Abfrage zusammenbauen kannst.
$land = $_POST['land']; $num = count($land); $or = ""; for($i=0;$i<$num;++$i) { if($i>0) { $or .= "|| "; } $or .= "land = '".$land[$i]."'"; } $query = " SELECT * FROM Waren WHERE ".$or." ";
So ungefähr.
Bitte vergiss nicht die Variablen die du bekommst zu filtern, um SQL-Injections vorzubeugen.
Viele Grüße,
Daniel