Suchmaske (PHP & SQL) perfektionieren

XXdynastieXX

Mitglied
Hallo!

Und zwar habe ich eine Suchmaske mit folgenden Suchkriterien erstellt :

Code:
Bundesland
Landkreis
Veranstaltung
Location
Ort
Datum, unterteilt in 3 Dropdowns TAG, MONAT, JAHR

Alles funktioniert ja schön und gut, jedoch ist meine Suchmaske alles Andere als gut und zwar hier die Ausgabe :

Code:
<?php

$xbl = $_GET['bundesland'];
$xlk = $_GET['landkreis'];
$xpn = $_GET['partyname'];
$xort = $_GET['ort'];
$xtag = $_GET['tag'];
$xmonat = $_GET['monat'];
$xjahr = $_GET['jahr'];

$sql="SELECT * FROM pc_events WHERE bundesland='$xbl' OR landkreis='$xlk' OR partyname='$xpn' OR ort='$xort' OR tag='$xtag' OR monat='$xmonat' OR jahr='$xjahr'";
$result=mysql_query($sql);

while ($row=mysql_fetch_assoc($result)) {

echo"	<table width=\"700\" border=\"0\">";
echo"	  <tr>";
echo"	    <td rowspan=\"5\"><a href=\"". $row["flyer"] ."\" rel=\"lightbox\"><img width=\"200\" src=\"". $row["flyer"] ."\"></a></td>";
echo"		<td align=\"left\"><table align=\"left\"><tr>";
echo"	    <td>". $row["partyname"] ." @ ". $row["location"] ."</td>";
echo"	  </tr>";
echo"	  <tr>";
echo"	    <td>"; include("ev_restzeit.php"); echo"</td>";
echo"	  </tr>";
echo"	  <tr>";
echo"	    <td>". $row["location"] ." in ". $row["ort"] ."</td>";
echo"	  </tr>";
echo"	  <tr>";
echo"	    <td>". $row["ort"] ." | ". $row["bundesland"] ."</td>";
echo"	  </tr>";
echo"	  <tr>";
echo"	    <td>". $row["beschreibung"] ." <a href=\"showevent.php?pid=". $row["id"] ."\">[mehr]</a></td>";
echo"	  </tr>";
echo"	</table>";
echo"	</td></tr></table>";
echo"	<br>";

}
?>

Wie kann ich es denn realisieren, dass nicht immer nur ein Wert abgefragt wird? Sondern z.B. die Werte die auch ausgefüllt sind.
Ich müsste dann wohl ein

Code:
if (!empty($_GET['bundesland']) .....

machen. Aber wie verknüpfe ich das alles gut zusammen? Ich kann ja nicht zu allen sagen if not empty und diese mit && verknüpfen weil dann muss ja jedes feld ausgefüllt sein.

Liebe Grüße :rolleyes:
 
Eine Suche macht man normalerweis mit like wenn du ein = verwendet dann werden nur sachen gefunden die genau dem entsprechen.
Bei like kanste induell Ergbnisse erzielen je nach dem wie man das dann definiert bsp alle die mit ab anfangen unsw.

Ansonsten würd ich mit And die Befehle Abfragen or liefert dir immer nur 1 der gesuchten Kategorien.

Mfg Splasch
 
Zuletzt bearbeitet:
Eine Suche macht man normalerweis mit like wenn du ein = verwendet dann werden nur sachen gefunden die genau dem entsprechen.
Bei like kanste induell Ergbnisse erzielen je nach dem wie man das dann definiert bsp alle die mit ab anfangen unsw,

Mfg Splasch

Vielen Dank. Das weiss ich auch. Das ist momentan aber nicht meine Frage.
Trotzdem vielen vielen Dank :)
 
Doch das Beantwortet genau deine Frage sollte mich mal fertig schreiben lassen *g

Mfg Splasch

hehe, ja konnte ich nicht wissen dass noch etwas dazukommt, hehe. also habs jetzt abgeändert auf

Code:
$sql="SELECT * FROM pc_events WHERE bundesland LIKE '%$xbl%' AND landkreis LIKE '%$xlk%' AND partyname LIKE '%$xpn%' AND ort LIKE '%$xort%' AND tag LIKE '%$xtag%' AND monat LIKE '%$xmonat%' AND jahr LIKE '%$xjahr%'";

und scheint bis jetzt zu funktionieren...vielen dank! :)
 
Obwohl der Thread schon etwas älter ist wollte ich darauf hinweisen, dass diese Lösung SQL Injection anfällig ist.

Never trust input parameter.


emu
 
Zurück