Mailinglisten-Archive |
Hi Anne, Anne Huebner wrote: > OK! .. das da unten soll jetzt mal nach der und-verknuepfung gucken .... > > $op = "like '$name%'"; > $op1 = "or"; > > $verk = ereg("+", $name); > if ( $verk == 1 ) { > > $op1 = "and"; > > $result = mysql("Firmen", "select > Adressen.FID,Adressen.fname,Adressen.unt,Adressen.mail,Adressen.home,Adressen.erw > from Adressen,Stichworte where (Adressen.fname $op $op1 (Stichworte.sw1 > $op or Stichworte.sw2 $op) and Stichworte.FID=Adressen.FID order by > Adressen.fname"); > } > du verknüpfst die Abfrage zwar schon richtig aber du nutzt noch den falschen Suchbegriff "xxx + yyy". Eine einfache Lösung für 2 Suchbegriffe der Form "suche1 || suche2" und "suche1 && suche2" sieht in etwa so aus: /* Test auf UND */ if (eregi("^([[:alpha:]]+)[[:space:]]+\&\&[[:space:]]+([[:alpha:]]+)\$", $name, $search)) { $query = "stichwort like '$search[1]%' AND stichwort like '$search[2]%'"; /* Test auf ODER */ } else if (eregi("^([[:alpha:]]+)[[:space:]]+\|\|[[:space:]]+([[:alpha:]]+)\$", $name, $search)) $query = "stichwort like '$search[1]%' AND stichwort like '$search[2]%'"; } else { $query = "stichwort like '$name%'; } $result = mysql(_query"SELECT ... WHERE $query"); Der wichtige Punkt ist, das in $search die Teilmuster aus den Klammern () enthalten sind, nachdenen dann in der DB gesucht werden kann. -- Jens Kaiser Application Developer Telemedia GmbH & Co KG Fon: 05241-80-1216 Carl-Bertelsmann-Straße 161 I Fax: 05241-80-9518 D-33311 Gütersloh E-Mail: jens.kaiser_(at)_telemedia.de
php::bar PHP Wiki - Listenarchive