| Autor | Zpráva | ||
|---|---|---|---|
| panterek Profil |
#1 · Zasláno: 21. 6. 2013, 09:18:08
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
}
} |
||
|
Časová prodleva: 3 dny
|
|||
| 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/ |
||
|
Časová prodleva: 13 let
|
|||
0