Hi,
also eine Lösung bei der du noch bisschen was lernst und probieren kannst (welche aber sicher nicht die beste ist) wäre folgenes:
Du kannst jeden Buchstabe in einen ASCII Wert umwandeln mit der Funktion
ord(); Beispiel:
Sollte dir eine 97 ausgeben. Das ist also er ASCII Wert. Diese kannst du alle in einer
ASCII-Tabelle nachlesen.
Mithilfe diverser
Stringfunktionen kannst du nun in deinen zu suchenden Strings jeweils den ersten Wert auslesen. Hast du hier Übereinstimmungen schmälert sich die Zielmenge bereits und du gehst zum 2. Buchstabe und machst das gleiche solange bist du keine Übereinstimmung mehr hast. Dann nimmst du einfach den Wert, der am wenigsten Differenz zwischen beiden Buchstaben hat (dazu musst halt den größeren Wert vom kleineren abziehen, sonst bekommst manchmal negative Zahlen). Aufpassen musst du auch bei einem Leerzeichen, da dieses einen kleineren Wert (glaube 32) liefert.
Hoffe du hast die Idee verstanden. Wenn nicht, dann mach Meldung mit deinen Versuchen oder beschreibe, was du nicht verstehst ;)
//Edit: Sorry, was ich gerade erst bemerkt habe: Du wolltest eine SQL Lösung? Das ist dies leider nicht, aber wenn es nicht so viele Werte sind, dann kannst du dir ja alle Werte aus der Datenbank auslesen und in ein Array schreiben. Unperformant, aber OK.
//Edit2: Du könnste es so machen. du hast das referenz-$wort und in der Spalte Wörter.
PHP-Code:
$sql = "SELECT
feld
FROM
tabelle
WHERE
woerter LIKE '" . $wort . "%'
ORDER BY
woerter";
Nimm den ersten Treffer oder schneide den letzten Buchstabe ab und probiere das ganze nochmal und so weiter. Denke so ähnlich könnte es gehen, wenn nicht, dann schiebe ich es auf die Uhrzeit :)
Domi