Achim Schrepfer: Suchfunktion für mehrere Worte

Beitrag lesen

Hi,

soweit ich weiss, bietet MySQL sogar eine Volltextsuche an, ich habe die nur noch nie benutzt. Wenn Du eine Suche nach mehreren Wörtern machen willst, muss Du zunächst den Suchbegriff anhand der Leerzeichen splitten (z.B. mit explode()), und dann einzelne per AND bzw. OR verknüpfte LIKE-Klauseln bauen. Hier mal ein Quick-And-Dirty-Code ausm Kopf (ungetestet):

$begriffe = explode(' ', $_GET['suche']);
foreach ($begriffe AS $key => $value) {
  $begriffe[ $key ] = "suchspalte LIKE '%".addslashes( $value )."%'";
}
$suchsql = 'SELECT * FROM foo WHERE ('.implode(') AND (',$begriffe).')';

Zunächst spalte ich den Suchstrin in die einzelnen Begriffe auf. Danach durchlaufe ich die Liste der Begriffe, füge die LIKE-Klausel dazu und lasse den Wert per addslashes() so umschreiben, dass er gefahrlos in ein SQL-Statement eingebaut werden kann. Anschließend wird das komplette SQL-Statement geschrieben und die einzelnen Klauseln per implode() wieder zusammen gesetzt.

viele Grüße
  Achim Schrepfer

--
http://reskit.speedesign.de/ - PHP-Bibliothek zum automatischen Erzeugen von HTML-Tabellen, -Formularen und -Baummenüs anhand von MySQL-Tabellen
Selfcode: sh:) fo:| ch:| rl:° br:> n4:{ ie:% mo:} va:| de:< zu:| fl:( ss:) ls:& js:|