Mailinglisten-Archive |
ich poste Euch einfach mal meine praktizierte Lösung. Vielleicht hilft Sie Dir weiter Gruss aus Brandenburg Ecki Gemmel // Suchprozedur über mehrere möglliche Stichwörter in einem Suchstring und zwei Textfelder zum Suchen // ------------------ //******************************************************************************************** //suchstichwort zerlegen anhand Leerzeichen als Trennzeichen und in Array &avar speichern $avar = preg_split("/[ \t.!?]+/", $stichwort); //Mehrfachleerzeichen ignorieren $len = count($avar); // Anzahl Suchbegriffe // Auch ein 0 -Array (kein Stichwort) spuckt $len-Wert 1 aus, deshalb Inhalt testen if (strlen($avar[0])>1) { if (strlen($branche)>1): // Ist Brancheneintrag angewiesen - selbigen ins Array nachtragen $avar[$len]=$branche; // Array Nummerierung ab 0, deshalb neuer = Anzahl endif; } else { if (strlen($branche)>1): // es soll offensichtlich nur Branche gesucht werden $avar[0]=$branche; // in Datensatz 0 des Arrays weil kein stichwort vorhanden endif; } // print_r($avar); $laenges1 = strlen($avar[0]); // Zeichenlänge des ersten Stichwortes für Entscheidung SQL basteln //******************************************************************** // SQL Sring für $avar > "" d.h. Such-Stichwörter wurden angewiesen //******************************************************************** if ($laenges1 > 1): // d.h. mindestens ein Suchbegriff //über alle Stichwortarray in $avar(x) suchen //Beginn Puzzle - SQL Kommando $queryanzahl für Treffermenge $queryanzahl = "SELECT COUNT(id_firma) FROM firma where ("; $query = "SELECT * FROM firma where ("; $ArraySize = sizeof($avar); // Größe des Arrays for ($i=0;$i<$ArraySize;$i++) { $SQLClause = $SQLClause . "stichpunkte like '%$avar[$i]%' or branche like '%$avar[$i]%'"; if( $i < $ArraySize-1 ): $SQLClause = $SQLClause . " or "; endif; } $SQLClause = $SQLClause . ") and plz like '".$plz."%'"; //Fertigstellen SQL Puzzle SQL String für Anzahl Treffer ohne Limit der Seiten $queryanzahl = $queryanzahl . $SQLClause; //Fertigstellen SQL Puzzle vollständiger SQL String $SQLClause = $SQLClause . " LIMIT ".$start.",".$limit; $query = $query . $SQLClause; endif; >Fazit: >man suche per >"SELECT * FROM Tbl WHERE (fld LIKE '%wort1%') OR (fld LIKE '%wort2%') usw.." >und werde glücklich ? >Vielleicht mal als Zusatzinfo: es geht um eine Tabelle mit < 1000 >Datensätzen... ------------------------------------------------------------------ E. Gemmel, Systemhaus Brandenburg GmbH gemmel_(at)_systemhaus-brandenburg.de / fon: +49 3381 2616-0 --- Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter -->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive