php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 22.10.2008, 20:39  
Benutzer
 
Registriert seit: 12.09.2008
Beiträge: 66
MatzeMuc86 befindet sich auf einem aufstrebenden Ast
Standard Umlauttolerante Suche - REPLACE()

hallo zusammen,

ich habe eine Datenbank mit Einträgen, die sowohl Umlaute wie auch keine haben.
z.B: "Müller" aber auch "Mueller".

Es gibt Formular (PHP) über welches die Filterung vom Benutzer gesteuert werden kann. Nun möchte ich, dass die Eingabe von "Müller" beides findet, aber auch die Eingabe von "Mueller".

Ich könnte nun einen query in die Richtung:
PHP-Code:
    SELECT FROM test WHERE REPLACE(REPLACE(`test`, 'ü''ue'), 'ä''ae'LIKE "%&input%" 
die Variable input darf dabie natürlich auch keine umlaute haben, sondern nur ae, oe, ue etc., was ich mittels PHP hinbekomme.
Nun ist die Frage, ob ich für alle Umlaute tatsächlich die Schachtelung wie oben machen muss oder ob das auch anders (besser) geht oder obs nicht sowieso ne 10000 mal bessere Idee gibt?

Danke
MatzeMuc86

Geändert von nikosch (13.03.2009 um 10:58 Uhr). Grund: Toleranz hat nichts mit toll zu tun, Fragezeichen sinnfrei
MatzeMuc86 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 22.10.2008, 23:05  
Neuer Benutzer
 
Registriert seit: 17.10.2008
Beiträge: 21
PHP-Kenntnisse:
Fortgeschritten
Robsen befindet sich auf einem aufstrebenden Ast
Standard

Hallo,

hast du dir mal die Funktion SOUNDEX bzw. SOUNDS LIKE angesehen? Gleich vorweg - das ist nicht genau das, was du suchst. Die Genauigkeit dieser Funktion ist sehr viel schlechter als dein bisheriger Algorithmus. Unter Umständen reicht das aber in deinem Fall aus - einfach mal mit spielen.

Grüße
Robsen ist offline   Mit Zitat antworten
Alt 23.10.2008, 07:13  
Benutzer
 
Registriert seit: 12.09.2008
Beiträge: 66
MatzeMuc86 befindet sich auf einem aufstrebenden Ast
Standard

ich dachte das bezieht sich auf die englische sprache?
MatzeMuc86 ist offline   Mit Zitat antworten
Alt 23.10.2008, 09:23  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Ich finde die x Replaces nicht so toll.
Nochmal bezugnehmend auf den früheren Lösungsvorschlag

"M%llerm%uschen"

könntest Du zusätzlich die Länge einbeziehen. Also (Länge mit Umlauten) + (Anzahl der Umlaute) als Maximalwert.

PHP-Code:
$search 'Müllermäuschen';
$search str_replace (array ('äöü...') , '%' $search);
$length  strlen ($search) + substr_count($search'%');

...
'WHERE Nachname LIKE "' .$search'" AND LENGTH(Nachname) <= ' $length
Ist auch nicht 100% aber schon nahe dran und für die mAnwendung wohl ausreichend.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 23.10.2008, 12:33  
Neuer Benutzer
 
Registriert seit: 17.10.2008
Beiträge: 21
PHP-Kenntnisse:
Fortgeschritten
Robsen befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von MatzeMuc86 Beitrag anzeigen
ich dachte das bezieht sich auf die englische sprache?
Ja das spielt aber an sich kaum eine Rolle, da hier alle Vokale missachtet werden. Und ob das in deutsch oder englisch oder sonstwas passiert ist dann letztendlich egal.

Soundex – Wikipedia

Grüße
Robsen ist offline   Mit Zitat antworten
Alt 23.10.2008, 17:27  
Benutzer
 
Registriert seit: 12.09.2008
Beiträge: 66
MatzeMuc86 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von nikosch Beitrag anzeigen
Ich finde die x Replaces nicht so toll.
Nochmal bezugnehmend auf den früheren Lösungsvorschlag

"M%llerm%uschen"

könntest Du zusätzlich die Länge einbeziehen. Also (Länge mit Umlauten) + (Anzahl der Umlaute) als Maximalwert.

PHP-Code:
$search 'Müllermäuschen';
$search str_replace (array ('äöü...') , '%' $search);
$length  strlen ($search) + substr_count($search'%');

...
'WHERE Nachname LIKE "' .$search'" AND LENGTH(Nachname) <= ' $length
Ist auch nicht 100% aber schon nahe dran und für die mAnwendung wohl ausreichend.
Ist eine Idee, aber wo ist der Vorteil?
Bei meiner Variante treffe ich genau 100%, also nicht zu viele und nicht zu wenige.
Ein unlösbares Problem ist die tatsache, dass es Worte mit "ae" gibt, ohne dass dies "ä" bedeutet. Was hier aber egal bzw. vernachlässigbar ist.

zu deinem Code:
strlen liefert die Länge des Strings und substr_count die Anzahl der vorhandenen "%" Zeichen, dann müsste die letzte zele aber so aussehen:
PHP-Code:
$length  strlen ($search) + 2*substr_count($search'%'); 
Also der Faktor 2, da ja jedes "%" sowohl "ä" wie aber auch "ae" heißen darf.

MatzeMuc86
MatzeMuc86 ist offline   Mit Zitat antworten
Alt 24.10.2008, 10:27  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
Ein unlösbares Problem ist die tatsache, dass es Worte mit "ae" gibt, ohne dass dies "ä" bedeutet. Was hier aber egal bzw. vernachlässigbar ist.
Die gibt es auch mit anderen Kombinationen. Und gerade bei ß wird das sehr entscheidend und überaus häufig.
Deine Lösung erscheint mir einfach sehr aufwendig.

Zitat:
strlen liefert die Länge des Strings und substr_count die Anzahl der vorhandenen "%" Zeichen, dann müsste die letzte zele aber so aussehen:
Also der Faktor 2, da ja jedes "%" sowohl "ä" wie aber auch "ae" heißen darf.
Nein. Weil das % Zeichen ja schon eines der Zeichen in der Länge ersetzt.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 24.10.2008, 14:01  
Benutzer
 
Registriert seit: 12.09.2008
Beiträge: 66
MatzeMuc86 befindet sich auf einem aufstrebenden Ast
Standard

Also das erste Problem ist ja überall das glcieh, also wenn eben "Schuss" nicht "Schuß" ist.

Bezüglich der Lösung die ich anwenden werde:
Wie sieht es von der Performance aus?
Macht das einen unterschied, ob ich eine Bedingung mehr habe oder einfach eine Fuktion im MySQL Query wie REPLACE (was ja keine PHP Funktion ist!)?

Danke
MatzeMuc86
MatzeMuc86 ist offline   Mit Zitat antworten
Alt 24.10.2008, 14:28  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Probiers aus...
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 24.10.2008, 15:09  
Benutzer
 
Registriert seit: 12.09.2008
Beiträge: 66
MatzeMuc86 befindet sich auf einem aufstrebenden Ast
Standard

naja bei ca 500 einträgen der db die das betrifft derzeit nicht wirklich berechenbar (oder schon?)
MatzeMuc86 ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Suche Mitarbeiter für Feuerwehr / Polizei & Rettungsdienst Browsergame.. h3nny Beitragsarchiv 9 01.02.2009 14:56
Problem mit foren suche programmieren! litterauspirna PHP Tipps 2008 4 17.08.2008 12:17
Verbesserungsvorschläge: Design und Suche Manko10 Board-Support 3 15.06.2008 16:21
Suche 'strahlfreudigen' Router nikosch Off-Topic Diskussionen 6 22.01.2008 19:06
Suche in Office Dateien mit Index Beatbox Off-Topic Diskussionen 6 09.02.2007 15:34
Suche Alienuser PHP Tipps 2006 5 02.07.2006 16:31
suche funktion: suche alles zwischen notyyy PHP Tipps 2006 7 05.06.2006 20:46
[Erledigt] Erweiterung der Suche PHP Tipps 2007 2 01.12.2005 19:30
Suche in Datenbank realisieren Unbekanntes_Pferd PHP Tipps 2007 4 09.11.2005 16:22
suche lösungsweg für komplexe suche, md5hash PHP Tipps 2005-2 3 19.07.2005 17:57
stichwort suche boehseronkel Datenbanken 2 14.07.2005 09:28
mal wieder eine suche lomtas Datenbanken 0 12.07.2005 11:03
Suche Job als Entwickler/Designer (Raum Bonn o. Telearbeit) Beitragsarchiv 23 01.03.2005 14:00
Suche mehrere Images........ Beitragsarchiv 7 10.01.2005 08:07

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
substr_count umlaute, php replace umlaute, replace ? datenbank, php substr_count suche keine umlaute, php substr_count umlaute fehler, mysql soundex ss and ß, mysql soundex genauigkeit, replace datenbank gesamte php-funktion, php search umlaute in datenbank suchen, mysql rwplace ä ü, umlaut suchanfrage php, php suchfunktion umlaute toleranz, php suche umlauttoleranz, php suchabfrage replace, php str_replace datenbank, mysql umlaut toleranz, php substr_count umlaute, ß replace php, select like preg_replace umlaute ähnliche vokal, substr_count nur vokale

Alle Zeitangaben in WEZ +2. Es ist jetzt 02:54 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum