Hey,
vielen vielen vielen lieben Dank für deine Hilfe. Du hast mir wirklich den Abend gerettet.
Gerne :)
Also haben mich andere angelogen die meinten, es geht nur mit der PHP Funktion call_user_func_array?
Keine Ahnung, ich hab die Funktion noch nie gebraucht/gesehen. Dementsprechend weiß ich nicht was diese macht oder wofür man diese brauchen könnte.
Deine Änderungen funktionieren wunderbar. Jetzt habe ich noch eine Frage. Wenn ich nach dem Datum noch filtern möchte, dann muss ich diesen Blog kopieren und eben auf das Datum abändern?
elseif ($usz_name != false) { $stmt = $mysqli->prepare($select . " WHERE usz_name =?" ); $stmt->bind_param("s", $usz_name); }
Das gleiche gilt dann für den Blog, bis richtig? Wenn ich von bis filtern möchte, dann muss ich einen weiteren Blog einfügen, richtig?
Und jetzt treibe ich es noch ein Schritt weiter, wenn ich sage, ich möchte nach folgenden filtern:
- Name
- Von
- Bis
Oder
- projektnummer
- Bis
Oder
- projektnummer
- von
- bis
Oder
- Name
- bis
Das heißt also, ich muss für jede Option ein Blog einbauen, richtig?
Richtig aber wie du merkst wird das recht komplex. Wie ich es auch gerade drehe und wende, finde ich keine elegante Lösung. Die Schwierigkeit liegt zum einen darin, dass du 4 Variablen hast, welche dann (wenn ich mich grad nicht irre) in 4! = 16 Möglichkeiten endet und darin, dass das Statement ein AND
in der Bedingung braucht wenn es denn mehrere gibt. Sprich bei jeder Möglichkeit, außer bei keiner false
und alle false
, musst du prüfen ob davor schon eine wahr war um das entsprechende AND
zu setzen.
Eine Möglichkeit gäbe es vielleicht um starke Kopfschmerzen zu vermeiden.
Du baust dir das Statement so wie du es brauchst und wenn die Variable false
ist lässt du dir alles ausgeben mit Where xyz Like=%
. Das kann man dann noch in eine abfrage bauen mit ((xyz == false) ? "Where xyz Like=%" : "Where xyz = ".$xyz )
.
FYI ((Abfrage) ? Ergebnis true : Ergebnis false)
Und wo ich es gerad fertig geschrieben hab kommt mir wieder das AND
in die Quere.
Ich lasse mir das heute Nacht nochmal durch den Kopf gehen, vielleicht komme ich ja auf eine schicke Lösung.
Gruß
Jo