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