Suche mit AND und OR

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

  • Suche mit AND und OR

    Hallo,
    ich bin dabei, eine Suche zu erstellen, mit der man nach mehreren Suchbegriffen (mit AND oder OR verknüpft) suchen kann. Dazu steht lediglich ein <input> zur Verfügung.

    Z.B. soll folg. Eingabe möglich sein: "Dru AND cker OR %Scanner%" soll folg. Suchstring liefern: "AND meldung.problem LIKE 'Dru' AND meldung.problem LIKE 'cker' OR meldung.problem LIKE '%Scanner%').

    Für den AND- bzw. OR-Fall habe ich schon die Lösung, aber ich weiss nicht, wie ich vorgehen soll, wenn AND und OR zusammen auftreten.

    PHP-Code:

    $problem_auswahl 
    'Peter AND Pan AND blup AND Bla';
    $problem_array explode("AND"$problem_auswahl);

    for (
    $i 0$i <= (count($problem_array)-1); $i++) {
        
    $problem_array[$i] = 'meldung.problem LIKE \''.str_replace(" """$problem_array[$i]).'\'';
        
    $problem_auswahl_abfrage .= ' AND '.$problem_array[$i];
        } 

  • #2
    da du dir ja sowieso eine reihenfolge überlegen musst (ist AND wichtiger als OR oder umgekehrt), explode einfach bei AND und die teile, die du bekommst explodest du bei OR (oder umgekehrt, wie du willst)
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      Naja, danke für die Hilfe (obwohl mir die Methode an sich auch schon klar war - nur die Umsetzung viel mir schwer), aber hier der Vollständigkeit halber die Lösung:

      PHP-Code:
      $problem_auswahl 'Peter AND Pan OR Peter Pan';

      $problem_array explode('AND'$problem_auswahl);
      $problem_auswahl_abfrage 'AND meldung.problem LIKE \\\'%';
      for (
      $i 0$i <= (count($problem_array)-1); $i++) {
           if (
      substr_count($problem_array[$i], 'OR') >= 1) {
              
      $problem_array2 explode('OR'$problem_array[$i]);
              
      array_splice ($problem_array$i1$problem_array2);
              
      $problem_auswahl_abfrage .= str_replace(' '''$problem_array[$i]).'%\\\' OR meldung.problem LIKE \\\'%';
          } else {
              
      $problem_auswahl_abfrage .= str_replace(' '''$problem_array[$i]).'%\\\' AND meldung.problem LIKE \\\'%';
          }
      }

      // Ausgabe der Abfrage (abzüglich der Länge des Suffix)
      echo substr($problem_auswahl_abfrage'0'strlen($problem_auswahl_abfrage)-28); 
      ergibt:

      PHP-Code:
      AND meldung.problem LIKE '%Peter%' AND meldung.problem LIKE '%Pan%' OR meldung.problem LIKE '%PeterPan%' 

      Kommentar

      Lädt...
      X