phpbar.de logo

Mailinglisten-Archive

[php] Suchbegriffe verknuepfen

[php] Suchbegriffe verknuepfen

Jens Kaiser Jens.Kaiser_(at)_telemedia.de
Tue, 09 Mar 1999 12:23:42 +0100


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