Lange IF-Schleife

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Lange IF-Schleife

    Guten Tag

    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?

    Hier der relevante Code:

    // Datenbankabfrage
    if (empty($veranstaltungstyp)) {
    if (empty($datum)) {
    if (empty($loc)) {
    $query = "select ... from ... where ... order by ..."
    }
    }
    }
    if (!empty($veranstaltungstyp)) {
    if (empty($datum)) {
    if (empty($loc)) {
    $query = "select ... from ... where ... order by ..."
    }
    }
    }
    if (empty($veranstaltungstyp)) {
    if (!empty($datum)) {
    if (empty($loc)) {
    $query = "select ... from ... where ... order by ..."
    }
    }
    }
    if (empty($veranstaltungstyp)) {
    if (empty($datum)) {
    if (!empty($loc)) {
    $query = "select ... from ... where ... order by ..."
    }
    }
    }
    if (!empty($veranstaltungstyp)) {
    if (!empty($datum)) {
    if (empty($loc)) {
    $query = "select ... from ... where ... order by ..."
    }
    }
    }
    if (!empty($veranstaltungstyp)) {
    if (empty($datum)) {
    if (!empty($loc)) {
    $query = "select ... from ... where ... order by ..."
    }
    }
    }
    if (empty($veranstaltungstyp)) {
    if (!empty($datum)) {
    if (!empty($loc)) {
    $query = "select ... from ... where ... order by ..."
    }
    }
    }
    if (!empty($veranstaltungstyp)) {
    if (!empty($datum)) {
    if (!empty($loc)) {
    $query = "select ... from ... where ... order by ..."
    }
    }
    }

  • #2
    du könntest die Abfragen schachteln:

    PHP-Code:
    if (empty($veranstaltungstyp)) {
    if (empty(
    $datum)) {
    if (empty(
    $loc)) {
    $query "select ... from ... where ... order by ..."
    }
    }
    }
    wird zu

    if (empty($veranstaltungstyp) && empty($datum) && empty($loc)) {
    $query "...";

    Kommentar


    • #3
      $where="";

      if($datum)$where=" datum='$datum'";
      if($ort)
      {
      if($where)$where.=" and";
      $where.=" ort='$ort'";
      }
      if($sonstnochwas)
      {
      if($where)$where.=" and";
      $where.=" sonstnochwas='$sonstnochwas'";
      }

      if($where)$where=" WHERE".$where;

      $query="select * from bla".$where;

      ...so vielleicht?
      eval(str_pad(aa|db,4,slarti^~äü_i_)." \"áú¾ïùû䶳Ðäýï©üèíþç£þé\"^~\"no bugs, only features\";");

      Kommentar


      • #4
        Du kannst zunächst für die nicht angegebenen Fälle ein "Finde-Alles" Platzhalter einbauen, also:
        if (!isset($veranstaltungstyp)) $veranstaltungstyp="%";
        dito $datum
        dito $loc

        Dann die query: select ... where spalte1 = $veranstalungstyp and spalte2 = $datum and spalte3 = $loc

        So in etwa ;-)

        mfg

        Kommentar

        Lädt...
        X