Autor Zpráva
panterek
Profil
Ahoj,

nevím, jak lépe to nazvat, proto se mi nedaří najít ani vhodný dotaz pro google, který by mi jistě poradil.
V DB mám nějaká jména a chtěl bych, aby došlo k fulltextového vyhledávání v momentě, kdy do <input type="text".... /> začnu psát třeba "novo".
A mně vyjedou všechny výsledky, které obsahují tento řetězec (novotný, blablanovoblabla). Čili provede se nějaký SELECT name FROM ... a provede se v reálném čase.
Vybrané slovo se vloží do formuláře a budu jej moct odeslat...

poradil by někdo?

díky
juriad
Profil
Vytvoř si další PHP soubor, který bude podle parametru name hledat v databázi a výsledek dotazu bude vypisovat ve formátu JSON.
Například soubor nameService.php
<?php
if(!isset($_REQUEST['name']) { # REQUEST zajistí, že mu bude jedno, jestli je name v $_GET nebo v $_POST
  header('Bad Request', true, 400);
  exit;
}

$name = $_REQUEST['name'];
# … pripojeni k databazi …
$query = mysql_query("SELECT name FROM tabulka WHERE name LIKE '%$name%' ORDER BY name");

$vysledek = [];
while($row = mysql_fetch_assoc($query)) {
  $vysledek[] = $row['name'];
}

echo json_encode(vysledek);

Až rozchodíš to, že ti nameService.php?name=novo bude vracet správný výsledek, nastavíš inputu onkeyup event listener, který bude tu nameService volat AJAXem (jen v případě, že se hodnota inputu změnila): Pomůžete mi někdo vytvořit ajax auto submit?. Jako callback funkci použiješ něco jako:
function(odpoved) {
  var jmena = JSON.parse(odpoved); // funguje od IE8, pro nižší je potřeba polyfill
  if(jmena.length > 0) {
    document.getElementById('#id-inputu').value = jmena[0]; // tady by to chtelo vymyslet neco lepsiho
  }
}
panterek
Profil
Díky ti moc...podařilo se to rozjet.

Posléze jsem ještě hledal a našel hotové řešení, kdyby to někomu pomohlo:

http://www.htmlblog.us/jquery-autocomplete
http://jamesskidmore.com/scripts/smartsuggest/

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: