Selectabfrage WHERE "so ähnlich"

cameeel

Erfahrenes Mitglied
Hi,

ich kann mir eigenltich nicht vorstellen das mein Problem noch nie behandelt wurde aber ich konnte nix finden, also muss ich doch fragen :)

Ich hab ein Forum programmiert, und zu nem Forum gehört natürlich auch ne Forensuche. Funktioniert eigentlich auch alles, nur wenn man nach Benutzernamen sucht und "cAm3el" eingibt wird nix angezeigt weil der Nick in der DB natürlich "cAm3eel" heißt (2 "e").
Wie kann ich die Selectabfrage jetzt so schreiben das er nicht nach dem exakt gleichen Wort (Nick) sucht welches in das Formular eingegeben wird?

So siehts im Moment aus:
PHP:
  ...
  if($_POST['user'] && $_POST['forum'] != 'Alle Foren')
 													 {
 									 $ergebnis = mysql_query("SELECT * FROM forum_posts WHERE user = '".$_POST['user']."' AND forum = '".$_POST['forum']."' ORDER BY timestamp DESC");
 													 }
 													 elseif($_POST['user'])
 													 {
 									 $ergebnis = mysql_query("SELECT * FROM forum_posts WHERE user = '".$_POST['user']."' ORDER BY timestamp DESC");
 													 }
  ...

thx...
cAm3eel
 
Ich weiss nicht ob es die Funktion in MySQL gibt, aber probier' mal "SOUNDEX".

Also in der Art:

SELECT ...... WHERE SOUNDEX (user) = SOUNDEX ('cAm3el')
 
Ne geht leider nicht...
Ich dachte immer da kann man irgendwie mit Prozentzeichen MySQL sagen das es sich auch um einen ähnlichen String handeln kann und nicht um exakt den der gepostet wurde, oder irre ich mich?

MfG
cAm3eel
 
Das '%' als Wildcard steht für eine beliebige Zahl Zeichen, also findet zB

...Where Name LIKE 'Mei%'

Meier, Meister, Mei, etc

Und der '_' steht für ein einzelnes Zeichen, also

...Where Name LIKE 'M__er'

findet Maier, Meier, Mayer und Meyer, aber auch Mauer

Bei Deinem Problem sind diese Wildcards aber nicht wirklich hilfreich

Vielleicht kennt jemand, der sich mit MySQL auskennt, eine Funktion, die ähnlich SOUNDEX funktioniert?
 
Zuletzt bearbeitet:
Dann könnte es doch so gehen:
..WHERE user = '%c%A%m%3%e%e%l%'
oder?

weißt du ob es ne Funktion in PHP gibt die den String zerlegt und quasi nach jedem Buchstaben etwas (in dem Fall ein Prozentzeichen) einfügt?

Oder geht es so wie ichs mir überlegt hab gar nicht?

MfG
cAm3eel
 
Das könnte so gehen.
Die % fügst Du so ein:
PHP:
<?php
$text = "cAm3eel";
$text = "%".chunk_split($text, 1, "%");
echo $text;
?>

redlama
 
Zurück