Mailinglisten-Archive |
On Thu, 3 Jun 1999 09:57:47 +0200, Tobias Ratschiller wrote: >> wenn jetzt allerdings jemdand nicht nur einen Suchbegriff bei der >> Suche >> eingibt, sondern 2 oder mehrere, dann werden diese mit einem + >> zusammengepappt an das PHP3 Script uebergeben, was dann natuerlich >> nix in >> der Datenbank finden kann... > >Du verwendest als Action-Methode im Formular GET. Damit werden die >Parameter URL-kodiert an die URL "drangehängt": >?suchbegriff=Gebratenes+Seezungenfilet >PHP ist es aber egal, welche Action-Methode Du verwendest: Ob GET oder >POST, was reinkommt (suchbegriff: Gebratenes Seezungenfilet) kommt in >Deinem Skript auch wieder raus (echo $suchbegriff;//output: Gebratenes >Seezungenfilet, also natürlich ohne das Plus-Zeichen). >Die Suche nach den zwei Wörtern funktioniert also korrekt. So wie ich das hier verstanden habe, soll daraus aber automatisch sowas werden: select inhalt from menu where inhalt like '%Gebratenes%' and inhalt like '%Seezungenfilet%' Das findet dann auch "Gebratenes Schweinefleisch". >Was anderes ist es, wenn Du Eingaben wie "Schweineschnitzel OR >Seezungenfilet", eine Boolesche Suche erlauben, möchtest. Dann >könntest Du tatsächlich explode() verwenden: Auch hier ist es nicht so einfach, denn wenn man and/or/not erlaubt, und davon ausgeht, daß zwei begriffe immer per "and" verknüpft sind, kann die eingabe möglicher begriffe so aussehen: begriff1 begriff2 begriff1 and begriff2 begriff1 begriff2 not begriff3 begriff1 begriff2 or begriff3 not begriff4 etc. Wenn man dann noch anführungszeichen oder klammern erlaubt, wird es schon ziemlich komplex, denn aus all diesen möglichen eingaben soll immer ein entsprechend gültiges sql-statement kommen... >Diese einfachste Variante könntest Du noch um AND und Klammern etc. >erweitern. Ich glaube, in den Archiven dieser Liste findest Du auch >noch was zu dem Thema (von Amalesh?). Viel Spaß. Ne, von mir nicht, ich bin grade erst dabei ein konzept dafür zu erstellen (wahrscheinlich gibt es aber schon fertig codiertes - bloß wo?). Das einfachste konzept scheint mir zu sein: Die fehlenden operatoren einzubinden und dann ein ereg_replace zu machen (aber auch nicht ganz trivial). Als andere, bzw. ergänzende lösung fallen mir nur aufeinanderfolgende explode's ein, die jeweils mit and/or/not operator-begriff-paare bilden, die dann anschließend per ereg_replace vervollständigt werden. Wir wird das nun aber wirklich am besten gemacht? Ist das nicht eine klassiche aufgabe aus dem informatik-studium? ;) ciao amalesh -- C++ ~ MFC ~ Java ~ PHP ~ ASP ~ SQL ~ XML ~ DOM http://www.living-source.com ~ ak_(at)_living-source.com 040-39904183 ~ 0761-152580 ~ 0170-4809618 ~ icq: 963380
php::bar PHP Wiki - Listenarchive