tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
324
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von dr_Alex
    dr_Alex dr_Alex ist offline Mitglied Gold
    Registriert seit
    Oct 2003
    Beiträge
    104
    hallo,

    ich möchte eine suche durch mysql machen. der benutzer soll die möglichkeit haben AND, OR oder NOT in das suchfeld einzutragen. und schon hier stecke ich fest.

    so fängt es an:

    PHP-Code:
    $find=str_replace('*''%'trim($_POST['find']));
    $find_words=explode(' 'trim(preg_replace('#\s+#'' '$find)));
    for(
    $i 0$i count($find_words); $i++){
      
    $sql.=" AND (product_name LIKE '$find_words[$i])'";

    also das ist jetzt ohne die trennung. hat jemand eine idee? ich brauche nur einen gedankenstoss.

    danke vorraus
     

  2. #2
    motb motb ist offline Mitglied Gold
    Registriert seit
    Jun 2003
    Beiträge
    101
    Hi dr_Alex!

    bin das ganze jetzt durchgegangen und habe folgendes ausgetüfftelt.
    Kann man sicher noch optimieren, aber es funktioniert.
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    
     
    $myString = "Wort1 Wort2 or Wort3 and Wort4 Wort5";
     
    $find=str_replace('*', '%', $myString);
    $find_words=explode(' ', $find);
     
    $sql="";
    $last_was_operator = 0;
    $operator="";
    for($i = 0; $i < count($find_words); $i++){
        $operator=" AND ";
        if ($last_was_operator == 0){
            if (strtoupper($find_words[$i]) == "OR" || strtoupper($find_words[$i]) == "ODER" ) { $sql.=" OR "; $last_was_operator = 1;}
            if (strtoupper($find_words[$i]) == "AND" || strtoupper($find_words[$i]) == "UND" ) { $sql.=" AND "; $last_was_operator = 1;}
        }
        if ($last_was_operator == 0) {
            $sql.= " AND (product_name LIKE '".$find_words[$i]."') ";
        }else{
            $sql.= " (product_name LIKE '".$find_words[$i]."') ";
            $last_was_operator = 0;
        }
    }
     
    echo $sql;

    Code teilt den String auf und nimmt als Default-Verknüpfung ein AND (also wenn die Suchwörter mit " " getrennt wurden).
    Findet er eine "and, und, or, oder" nimmt er dies als logische Verknüpfung.
    NOT habe ich jetzt nicht dabei, sollte aber leicht erweiterbar sein.

    lg,
    Daniel
     

Ähnliche Themen

  1. Suche Serversoftware wie CVS oder SVN
    Von The-Chaos6 im Forum Hosting & Webserver
    Antworten: 3
    Letzter Beitrag: 10.06.07, 19:46
  2. suche: hilfe oder tut oder erklärung
    Von feliks im Forum 3D Studio Max
    Antworten: 6
    Letzter Beitrag: 18.03.05, 16:15
  3. CMS oder DMS Contra :: Suche?
    Von NoVeK im Forum Content Management Systeme (CMS)
    Antworten: 0
    Letzter Beitrag: 08.03.05, 16:35
  4. suche avi oder mpeg
    Von IvettGross im Forum Videoschnitt, Videotechnik & -produktion
    Antworten: 2
    Letzter Beitrag: 20.07.04, 13:35
  5. Suche Kupfer oder Bronze
    Von GFX-Händchen im Forum Cinema 4D
    Antworten: 3
    Letzter Beitrag: 19.05.04, 13:04