Zum Inhalt springen

Suche nach Namen


Empfohlene Beiträge

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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).

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...