ben78 hat geschrieben:Schaut das jetzt besser aus?
Nö ;>
Code: Alles auswählen
$sql = "SELECT
*
FROM `test`.`schuhe`
WHERE (
`Bezeichnung` LIKE '%".$suchwort."%' OR
`Beschreibung` LIKE '%".$suchwort."%' OR
`Marke` LIKE '%".$suchwort."%' )";
Was sollen die ganzen Akzente da, hattest du Schluckauf? Brüllen musst du eigentlich auch nicht, dafür tut etwas Luftholen um PHP-Operatoren herum immer ganz gut:
Code: Alles auswählen
$sql = "select * from test.schuhe where Bezeichnung like '%" . $suchwort . "%' or Beschreibung like '%" . $suchwort . "%' or Marke like '%" . $suchwort . "%'";
Aber mal abgesehen von der Schönheit: Textsuchen mit einem Platzhalter am Anfang sind immer sehr schlecht, das ist das Schlechteste, was du bei MySQL bekommen kannst. Egal, ob ein Index auf der Spalte liegt oder nicht, die Datenbank muss immer sämtliche Zeilen durchsuchen - und das kann dauern. Wenn du nur drei Paar Schuhe verkaufst, ist das natürlich wurscht, bei dreihundert wird's mit Sicherheit gut messbar, bei dreitausend merkbar.
Nach einer Woche PHP und SQL wäre das zweifelsohne zu viel verlangt, aber falls dir die Sucherei irgendwann zu lange dauert, befasse dich mit N-Grammen. Dabei werden die zu durchsuchenden Texte in kleine Bruchstücke à drei oder vier Zeichen zerlegt (Text = "Beispiel" > N-Gramme = "Bei", "eis", "isp", "spi", "pie", "iel"), in einer separaten Tabelle gespeichert (zwei Spalten ngramm und text, jeweils "Bei" > "Beispiel", "eis" > "Beispiel", etc.) und diese statt des Originals durchsucht, die Anzahl der Vorkommen aufaddiert und danach sortiert (
select text,count(*) as n from textindex where ngram="Bei" or ngram="eis" or ngram="isp" [etc.] group by text order by n desc, die Suche nach"Beispiel" käme auf sechs Vorkommen, das vertippte "Beipiel" immerhin noch auf drei, "Beisitzer" auf hingegen nur eines).
Das hat nicht nur den Vorteil, dass die Datenbank einen Index nutzen kann und somit sehr schnell ist, du merzt auch noch Schreibfehler aus und lieferst der Eingabe sehr ähnliche Ergebnisse. Falls du dich mal gefragt hast, wie Amazon & Co. so schnell ihre Vorschläge herbeizaubern: Jetzt weisst du es, zumindest ansatzweise :)