platzhalter in mysql abfrage
Thomas R
- php
Hallo Leute ich habe mal eine spezielle Frage:
->SELECT * FROM kunde WHERE gender='$gender' and name='$name' <-
das führe ich aus wenn ich aus einer User Liste bestimmte User mit Geschlecht und Namen haben möchte!
Was ist aber wenn ich nochmal Auswahlkriterien verwende, diese aber im Formular anbiete diese aber leer gelassen werden ....
das heißt es würde dann
->SELECT * FROM kunde WHERE gender='$gender' and name=NULL <-
wie kann ich das lösen, das wenn ich 10 Kriterien habe, man aber eventuell nur nach 2 oder 3 Suchen bzw anzeigen lassen will.
Denn im Prinzip würde es ja mit allen Kriterien so aussehen :
->SELECT * FROM kunde WHERE gender='$gender' and $auswahl1='§postauswahl1' and $auswahl2='§postauswahl2' and $auswahl3='§postauswahl3' and ....<-
MFG TR
Hi,
wie kann ich das lösen, das wenn ich 10 Kriterien habe, man aber eventuell nur nach 2 oder 3 Suchen bzw anzeigen lassen will.
indem Du das richtige Statement zur Laufzeit generierst.
Cheatah
indem Du das richtige Statement zur Laufzeit generierst.
das heißt bei 10 Auswahlkriterien und einer Kobination von max 10 minimal 1ner Auswahl 100 Möglichkeiten und somit 100 Statements ?
Meinst du das ?
Danke für die zügige Antwort !!!
MFG TR
Hi,
das heißt bei 10 Auswahlkriterien und einer Kobination von max 10 minimal 1ner Auswahl 100 Möglichkeiten und somit 100 Statements ?
es sind bei zehn Kriterien 1024 Statements, aber sonst ja.
Cheatah
No other way?
das wenn ich prüfe ob die variable leer ist dann in der select anweisung einfach etwas übergehe ? NO WAY ?
Hi,
No other way?
the best way. Wo ist Dein Problem damit?
das wenn ich prüfe ob die variable leer ist dann in der select anweisung einfach etwas übergehe ? NO WAY ?
Ach Himmel, mit boole'scher Algebra kannst Du auch z.B. "... AND (bla = '$bla' OR '$bla' = '')" sagen, aber das ist verhältnismäßig sinnarm. Generier einfach das optimale Statement.
Cheatah
the best way. Wo ist Dein Problem damit?
das ich einen Kloß im Hals hatte, zu erfahren das ich dann 1024 Statements erstellen muss !!
da werde ich nicht drumrum kommen!?
MFG TR
Hi,
das ich einen Kloß im Hals hatte, zu erfahren das ich dann 1024 Statements erstellen muss !!
musst Du nicht, sondern nur eine Generierung.
Cheatah
musst Du nicht, sondern nur eine Generierung.
na wie jetzt?
Kannst du mir nicht genauer weiterhelfen, was da stehen sollte, bzw muss ?
:-(
MFG
Hi,
musst Du nicht, sondern nur eine Generierung.
na wie jetzt?
wieso? Ich habe die ganze Zeit von nichts anderem geredet.
Kannst du mir nicht genauer weiterhelfen, was da stehen sollte, bzw muss ?
Nein. Wenn Du mir sagst, wo Dein Problem damit liegt, kann ich aber vielleicht helfen, dieses auszuräumen.
Cheatah
Hallo Thomas,
Das soll nur mal eine Art Lösungsansatz sein, ist also ungetestet, aber so in der Richtung sollte es funktionieren.
Du kannst Dir Dein SQL-Query dynamisch zusammenbauen in dem Du zuerst checkst ob der Parameter existiert, also als Auswahlkriterium in Frage kommt. Sollte dies der Fall sein wird der Teilstring einem Array hinzugefügt:
//Parameterübergabe:
if( isset($_POST["gender"]) ) $gender = $_POST["gender"];
else $gender = "";
//Check ob Variable Wert enthält:
if( isset($gender) )
{
$sql_arr[] = "gender='" . $gender . "'";
}
usw... für alle Parameter
// Ist das das Array grösser als 1 wird der Inhalt per implode()
// durch AND verkettet, ansonsten gibt es halt nur einen Wert...
if( sizeof($sql_arr) > 1 )
{
$sql_part = implode(" AND ", $sql_arr);
}
else
{
$sql_part = $sql_arr[0];
}
// Danach wird der Teilstring an das SQL-Query drangehängt und
// entsprechend weiterverarbeitet...
$sql = "SELECT * FROM kunde WHERE . sql_part;
Vielleicht bringt Dich das ein wenig weiter?
Gruss AndreD