PHP/MYSQL Suchfunktion in 4 Spalten

medico

Erfahrenes Mitglied
Hallo zusammen,

ich weiß nicht ob das Thema nicht evtl schon mal besprochen wurde, ich habe über die Forensuche nichts passendes gefunden.

Und zwar möchte ich über ein Formular in einer MYSQL Datenbank suchen, so wie ich das bis jetzt habe klappt es auch ganz gut bis auf ein paar Ausnahmen.

Es gibt in der DB folgende Felder Geschlecht, Farbe, Marke, Kennzeichen....nun soll es so sein das das wenn ich nach dem Geschlecht suche und alles andere frei lasse, das alle angezeigt werden die z.b. weiblich sind...das klappt auch....nun soll es aber auch möglich sei, das wenn ich nach Geschlecht suche und nach Marke, das er mir nur die Weiblichen mit der Marke Ford ausgibt. Und das klappt nicht. Es werden alle weiblichen angezeigt.

Wie müsset die richtige suchabfrage aussehen, damit ich alles miteinander kombinieren kann?

Hier mal meine aktuelle Abfrage
PHP:
$result_search = mysql_query("
SELECT * FROM users WHERE 
(geschlecht LIKE '$_POST[geschlecht]') AND (marke LIKE '$_POST[marke]') AND (farbe LIKE '%$farbe%') AND (kennzeichen LIKE '%$_POST[kennzeichen]%')");

Danke schon mal :-)
 
Hallo,

wenn du Geschlecht und Marke gesetzt hast, dann sollte dir die Abfrage korrekte Ergebnisse liefern. Auf den ersten Blick sehe ich da nichts falsches. Was mich aber stört, ist dass du deine Variablen in deinem String voll drinenn stehen hast. Ich habe da schon einmal Probleme gehabt, da (an deinem Beispiel) bei mir eine Variable $marke oder eine Konstante gesetzt war. Die wurde innerhalb des $_POST[...] ersetzt und somit hat er das falsche Feld abgerufen.

Lange geredet, das will ich damit ausdrücken (mit SQL-Injection Verhinderung):
PHP:
$sql = "
SELECT * FROM users WHERE 
(geschlecht LIKE '" . mysql_real_escape_string($_POST['geschlecht']) . "') 
AND (marke LIKE '" . mysql_real_escape_string($_POST['marke']) . "') 
AND (farbe LIKE '%" . $farbe . "%') 
AND (kennzeichen LIKE '%" . mysql_real_escape_string($_POST['kennzeichen']) . "%')";

echo $sql;
$result_search = mysql_query($sql);

Gruß
BK
 
Zurück