Autocomplete | PHP MySQL Jquery

Ja, das stimmt schon. :)

Er wirft mir einfach nur "[]" aus wenn ich die "suche.php" direkt aufrufe und einen wert provisorisch über GET übermittel. Weitere "Fehler" kann ich nicht finden.

Wenn ich in der Suchmaske suche gibt er gar nichts zurück.
Vielleicht kommt das Ausgabescript auch nicht damit klar.
 
Ähm, Du weißt schon, dass Du Deine Daten mit POST übergeben musst, weil Du das auch so in Deinem ursprünglichen Skript so hattest?
 
Also wenn du in deinem Such-Formular mit Methode POST arbeitest, musst auch POST als Superglobale im Script verwenden. Wenn es dir egal ist, ob GET oder POST, kannst du mit der Superglobalen $_REQUEST arbeiten (wovon ich aus Sicherheitsgründen abrate).

Vielleicht baust du an markanten Punkten ein paar Ausgaben mittels var_dump() oder echo ein, damit du sehen kannst, was du an die Datenbank sendest (Query) und was zurück kommt (bspw. im Loop von fetch).

Der Ansatz von crack ist für deine Bedürfnisse erstmal ausreichend, optimieren kannst du das später durch iterative Herangehensweise. Erstmal muss es überhaupt laufen und du verstehen, was da eigentlich passiert.

Geb doch mal den Query mittels echo aus, kopiere ihn und führe ihn in phpMyAdmin aus. Ggf. kannst du dir meine Methode zum Aktivieren der Fehlerausgabe und den Error-Modus von PDO übernehmen (falls da Fehler drin sind, wird eine PDOException geworfen).

EDIT: Ich habe mal cracks Ansatz ausprobiert, und es waren tatsächlich Fehler drin. Der array_filter() ist erstmal nicht wichtig, daher raus damit. Zweitens benötigt das Closure zu array_walk() eine Referenz auf das Item. Damit sieht mein Test-Code jetzt so aus:

PHP:
<?php
$term = "Apfelbäume Blätter alle grüne";

$hotwords = explode ( " ", $term );

array_walk ( $hotwords, function (&$item)
{
  $item = "`Satz` LIKE '%" . $item . "%'";
} );

$where = implode ( " AND ", $hotwords );

$query = "SELECT * FROM `saetze` WHERE {$where} ORDER BY `Satz`";

echo $query;
 
Zuletzt bearbeitet:
Zurück