phpbar.de logo

Mailinglisten-Archive

Re: [php] mehrere Suchbegriffe uebergeben?
Archiv Mailingliste php_(at)_infosoc.uni-koeln.de

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [php] mehrere Suchbegriffe uebergeben?



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

Home | Main Index | Thread Index

php::bar PHP Wiki   -   Listenarchive