Boubou: Gleichzeitige Suche nach mehreren Kriterien

Ich hab eine Frage ich will eine Suche bauen bzw habe schon eine.
In meiner Suche kann man über checkbuttons wählen nach was suchen.
1. Kriterium Ordnername und Ordnerinhalt
2. Kriterium Registername und inhalt
3. Kriterium Datum der Ereignisse für den Ordner
4. Kriteriuem Benutzer der im Ordner was verändert hat

Wenn ich die Kriterien einzeln wähle sind die Suchergebnisse richtig. Jedes Kriterium hat seine eigene Suchmethode die sich im SELECT Befehl unterscheidet.
So jetzt soll, aber die Möglichkeit sein das ich mehrere Krtierien wählen kann z.B. Suchen nach Datumsereignissen und Ordnernamen, also Kriterieum 3 und 1.

Klar ich könnte für jede der checkbuttons ein if ordnercheckbutton == checked and datum chechbutton == checked.... usw.
Problem Ich hätte über 10 Möglichkeiten von den einzelnen Kombinationen. Jemand ne andere Denkidee sowas zu verwirklichen ausser mit vielen Ifs und jeder Möglichkeit?

  1. Das Sql Statement dynamisch zusammenbaun:

    $sql = "SELECT Feld1 FROM Tabelle1 WHERE 1=1";

    if(checkbox1)
    {
      $sql = $sql + " AND/OR Bedingung2"
    }
    if(checkbox2)
    {
      $sql = $sql + " AND/OR Bedingung2"
    }

    hab ich dein problem richtig verstanden?

    1. genau so in der Art, nur problem ist du hast schon da if bedingungen mit checkbox.
      Das Problem ist ich habe bei 4 Checkboxen 36 Möglichkeiten die sein können, z.B. Ordner mit Datum und Register, Ordner mit Datum, Ordner mit Datum und Register und Benutzername usw.

      Ich will nicht schreiben:
      if(ordnercheckbox == true and benutzernamecheckbox == true)
      ....

      if(ordnercheckbox == true and benutzernamecheckbox == true and datumcheckbox == true)....

      if(ordnercheckbox == true and datumcheckbox == true)
      ...

      Genau das ist das Problem ich müsste mit If alle Fälle abfangen und bei $ checkboxen gibt es über 10 verschiedene Möglichkeiten dann würde ich wie oben jeden Fall mit if abfangen die box mit dem die mit dem usw.

      Wie kann ich diese ganzen Fälle wie die checkboxen angeklickt sein können abfangen ohne viele ifs?

      1. Wie kann ich diese ganzen Fälle wie die checkboxen angeklickt sein können abfangen ohne viele ifs?

        Indem du das Vorgängerposting nochmals durchliest.
        Du brauchst nur vier ifs
        aber du musst unter umständen nach diesen vier ifs ein 'AND/OR ' zuviel am Anfang des $sql entfernen.

        mfg Beat

        --
        Woran ich arbeite:
        X-Torah
        ><o(((°>           ><o(((°>
           <°)))o><                     ><o(((°>o
      2. Bei 5 Checkboxen 5 ifs, ich machs mal nur für 2:

        $sql = "SELECT asdf FROM asdf WHERE 1=1";
        if(datumcheckbox == true)
        {
          $sql = $sql . " OR datumsfeld = wert";
        }
        if(benutzernamecheckbox == true)
        {
          $sql = $sql . " OR benutzerfeld = wert";
        }

        Beim anklicken keiner checkbox steht in $sql:
        SELECT asdf FROM asdf WHERE 1=1

        Beim anklicken der datumcheckbox steht in $sql:
        SELECT asdf FROM asdf WHERE 1=1 OR datumsfeld = wert

        Beim anklicken der benutzercheckbox steht in $sql:
        SELECT asdf FROM asdf WHERE 1=1 OR benutzerfeld = wert

        Beim anklicken beider checkboxen steht in $sql:
        SELECT asdf FROM asdf WHERE 1=1 OR datumsfeld = wert OR benutzerfeld = wert

        entweder wir reden aneinander vorbei oder ich bin schlecht im erklären :)

        1. entweder wir reden aneinander vorbei oder ich bin schlecht im erklären :)

          Ne wir reden nicht aneinander vorbei, danke so einen ansatz habe ich gesucht:)

          Mfg Boubou

      3. Hi Boubou!

        Wie kann ich diese ganzen Fälle wie die checkboxen angeklickt sein können abfangen ohne viele ifs?

        So, wie es dave beschrieben hat.

        Beispiel:

        $where = ' WHERE 1=1';  
        if (ordnercheckbox == true) {  
          $where += " OR ordner = '%".$suchbegriff."%'";  
        }  
          
        if (benutzernamecheckbox == true) {  
          $where += " OR user = '%".$suchbegriff."%'";  
        }  
        /* usw. */  
          
          
        $sql = "SELECT spalte FROM table".$where;
        

        MfG H☼psel

        --
        "It's amazing I won. I was running against peace, prosperity, and incumbency."
        George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
        Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
        1. Hi Ingrid!

          $where = ' WHERE 1=1';

          Das ist natürlich Quatsch. Du musst, wie Beat beschrieben hat, darauf aufpassen, dass kein OR oder AND zu viel dasteht.

          MfG H☼psel

          --
          "It's amazing I won. I was running against peace, prosperity, and incumbency."
          George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
          Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)