Pittiplatsch Geschrieben 13. Oktober 2004 Teilen Geschrieben 13. Oktober 2004 Folgendes Problem Ich suche eine Möglichkeit, Namen aus einer MySQL - Tabelle zu filtern. Mit dem Befehl "$sql="select *....." klappt das natürlich ganz einfach, ABER wenn ich mich jetzt verschreibe, z.B. statt nem v im Namen ein w schreibe soll er mir trotzdem ein ergebnis liefern. Hab es jetzt mit folgendem Script probiert: $laenge=strlen($suche); for($leng=$laenge;$leng>=1;$leng--) { $rest = substr("$suche", 0, $leng); echo $rest."<br>"; $sql="select * from $table_pe where pers_name like '$rest%' ORDER BY pers_name,pers_vname"; $persult=mysql_query($sql,$conn_id); $perszahl=mysql_num_rows($persult); if($perszahl>=1) { break; } }[/PHP][/color] wobei in $suche der zu suchende Name steht. Funktioniert soweit auch ganz gut, bei den meisten Namen. Wenn ich jetzt aber Lewo eingebe, der sich eigentlich Lewo schreibt, werden mir alle Datensätze ausgegeben, die sich am Anfang mit Lew schreiben, also nicht den gesuchten Levo. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 13. Oktober 2004 Teilen Geschrieben 13. Oktober 2004 hm da wirste mit regulären Ausdrücken rann müssen, aber wie genau, kann ich dir auch nicht sagen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 14. Oktober 2004 Teilen Geschrieben 14. Oktober 2004 Funktioniert soweit auch ganz gut, bei den meisten Namen. Viel zu kompliziert select * from $table_pe where soundex(pers_name) = soundex($suche) ORDER BY pers_name,pers_vname soundex ist ne interessante (und eigentlich garnich komplizierte) Funktion, mit der man eine Art Klangwert ermitteln kann. Ähnliche Namen liefern also denselben Wert (was du ja auch suchst). Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
ssambdar Geschrieben 14. Oktober 2004 Teilen Geschrieben 14. Oktober 2004 Und noch ein Stück kürzer: SELECT * FROM $table_pe WHERE pers_name SOUNDS LIKE $suche ORDER BY pers_name, pers_vname; Das einzige Manko an SOUNDS LIKE bzw. SOUNDEX() ist, dass dieser Algorhythmus auf die englische Sprache ausgelegt ist. Es kann (muss aber nicht) dazu kommen, dass evtl. deutsche Vertipper nicht immer gefunden werden. Allerdings ist meine eigene Erfahrung mit dieser Funktion sehr gut. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 14. Oktober 2004 Teilen Geschrieben 14. Oktober 2004 Und noch ein Stück kürzer: SELECT * FROM $table_pe WHERE pers_name SOUNDS LIKE $suche ORDER BY pers_name, pers_vname; Cool, hab ich noch nie gehört. Gibts dass in allen SQL derivaten oder ist das z.b. MYSQL spezifisch? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
ssambdar Geschrieben 14. Oktober 2004 Teilen Geschrieben 14. Oktober 2004 Also in mySQL sowie MS-SQL ist es vorhanden.Laut meinem Google auch in Oracle. Also gehe ich mal davon aus, dass es in diversen Datenbanken vorhanden ist. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 14. Oktober 2004 Teilen Geschrieben 14. Oktober 2004 Also in mySQL sowie MS-SQL ist es vorhanden.Laut meinem Google auch in Oracle. Also gehe ich mal davon aus, dass es in diversen Datenbanken vorhanden ist. Gut zu wissen, besten dank! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 14. Oktober 2004 Teilen Geschrieben 14. Oktober 2004 hm schade, hab grad ma die INFORMIX hilfe durchforstet, aber da gibts sowas anscheinend nicht. (Oder es heisst anders?) muss ich wohl mit ner eigenen stored prozedure rann. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 14. Oktober 2004 Teilen Geschrieben 14. Oktober 2004 Das einzige Manko an SOUNDS LIKE bzw. SOUNDEX() ist, dass dieser Algorhythmus auf die englische Sprache ausgelegt ist. Naja, so arg unterscheidet sich die deutsche Sprache auch nicht von der englischen, also was den Algorhytmus angeht. Vokale werden vom SoundEx Algo. z.B. als 0 gewertet, fallen also weg. Und ein T ist ein T, egal ob deutsch oder englisch. Wir haben SoundEx bei uns im Einsatz (also einem Prog. von uns, allerdings nich die PHP Version- die sollte aber auf demselben Algo beruhen)) und es gibt eigentlich keine Probs damit. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
ssambdar Geschrieben 14. Oktober 2004 Teilen Geschrieben 14. Oktober 2004 Für die, die es interessiert: Der Algorhythmus (engl.) http://www.archives.gov/research_room/genealogy/census/soundex.html Folgende Buchstaben werden vom Algorhythmus als "gleich" gewertet (alle nicht genannten Buchstaben/Zeichen werden nicht gewertet): B, F, P, V C, G, J, K, Q, S, X, Z D, T L M, N R Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.