Sönke Tesch: Lange IF-Schleife :-(

Beitrag lesen

Ich habe ein Veranstaltungskalender programmiert. Mittels Pulldownmenues (<select>) können Suchkriterien eingegeben werden wonach sich die MYSQL-Abfrage (SELECT) richtet. Insgesamt stehen drei Menues zur Verfügung. 1. Datum, 2. Veranstaltungstyp, 3. Ort. Wird nichts ausgewählt werden alle Daten angezeigt. Nun gibt es da so einige Kombinationsmöglichkeiten wie z.B. nur Datum ausgewählt, Datum und Ort ausgewählt, Datum, Veranstaltungstyp und Ort ausgewählt etc. In einer langen IF-Schleife habe ich alle Fälle erfasst die auftreten können (hoffe es zumindest). Irgendwie scheint mir diese Lösung aber etwas umfangreich. Gäbe es nicht eine einfachere (intelligentere) Variante für die Datenbankabfrage ohne dass das Programm einen so lange Schleife durchlaufen muss?

Vorneweg: if ist keine Schleife, Schleifen haben die Eigenschaft, Programmteile zu wiederholen, das ist bei if nicht der Fall. if ist also lediglich eine bedingte Programmverzweigung :)

Wenn es Dir bei Deinem MySQL-Befehl um den where..-Teil geht, dann kannst Du den Befehl ganz einfach aus Bauklötzchen zusammensetzen:

$query="";                  // Vorsichtshalber leeren wegen Komma (s.u.)
  if ($veranstaltungstyp)
    {
     $query.="typ=".$veranstaltungstyp;
    };
  if ($datum)
    {
     if ($query) $query.=","; // Schon was drin? Ja: Komma einfügen.
     $query.="datum=".$datum;
    };
  if ($loc)
    {
     if ($query) $query.=",";
     $query.="loc=".$loc;
    };

if ($dbr=mysql_query("select xy from tabelle where ".$query))
  ...

Gruß,
  soenk.e