Ich habe ein Formular mit 6 Feldern. Anhand dieser Felder sollen die anzuzeigenden Datensätze gefiltert werden.
Also einfach so, wie man es aus excel kennt: man hat eine Tabelle und setzt darauf (auf jede Spalte) einen (Auto-)Filter.
Filtert man nach a, erhält man Daten, die a entsprechen. Filtert man nach a und b, erhält man Datensätze, die a UND b entsprechen, usw.
Ich kann also nicht mit einem einzigen SELECT arbeiten, weil sich das WHERE jeweils ändert.
Daher mein Ansatz mit if(isset()) zu arbeiten. Nur: bei 6 Feldern gibt es 6! (also 720) Kombinationen. Auch wenn nicht jede Kombinationen
sinnvolle Ergebnisse liefert, muss ich ja damit rechnen, dass der User das nicht sofort bedenkt und auch solche Kombinationen nutzt. Diese
müsste ich daher mit abdecken.
Gibt es da nicht eine elegantere Lösung?
Aber selbst wenn der Ansatz prinzipiell richtig wäre, funktioniert er bei mir schon im Ansatz nicht. Ich habe ..
Mit 'if' (2.Anweisung) funktioniert es nicht. Mit 'elseif' wird scheinbar die 2. Anweisung ignoriert und auf die erste zurückgegriffen.
Der ersten Anweisung ein !isset($_POST['pub']) hinzuzufügen, ändert auch nichts. Die Anweisungen alleine (also die eine ohne die jeweils
andere) funktionieren beide.
Danke!
Also einfach so, wie man es aus excel kennt: man hat eine Tabelle und setzt darauf (auf jede Spalte) einen (Auto-)Filter.
Filtert man nach a, erhält man Daten, die a entsprechen. Filtert man nach a und b, erhält man Datensätze, die a UND b entsprechen, usw.
Ich kann also nicht mit einem einzigen SELECT arbeiten, weil sich das WHERE jeweils ändert.
Daher mein Ansatz mit if(isset()) zu arbeiten. Nur: bei 6 Feldern gibt es 6! (also 720) Kombinationen. Auch wenn nicht jede Kombinationen
sinnvolle Ergebnisse liefert, muss ich ja damit rechnen, dass der User das nicht sofort bedenkt und auch solche Kombinationen nutzt. Diese
müsste ich daher mit abdecken.
Gibt es da nicht eine elegantere Lösung?
Aber selbst wenn der Ansatz prinzipiell richtig wäre, funktioniert er bei mir schon im Ansatz nicht. Ich habe ..
PHP-Code:
if(isset($_POST['kunde'])){
$sql .= " WHERE k.name = '" . $_POST[kunde] . "'";
}
elseif(isset($_POST['kunde']) && isset($_POST['pub'])){
$sql .= " WHERE k.name = '" . $_POST['kunde'] . "'"
. " AND p.name = '" . $_POST[pub] . "'";
}
Der ersten Anweisung ein !isset($_POST['pub']) hinzuzufügen, ändert auch nichts. Die Anweisungen alleine (also die eine ohne die jeweils
andere) funktionieren beide.
Danke!
Kommentar