Autor Zpráva
Alois Marhoul
Profil *
Ahoj

Rád bych na svých stránkách měl funkci našeptávače ve vyhledávacím okně.
Našel jsem článek na Intervalu (http://interval.cz/clanky/google-suggest-aneb-naseptavac-s-xmlhttpreq uest/) jak to udělat pomocí google. já bych to ale chtěl postavit nad vlastní databázi. Nevíte o hotové funkci?
MzM
Profil
Tak je to AJAXovina, tak JS šlohni z googlu nebo jiného hotového a dodavatele dat si napíšeš, vcelku snadno, sám. Ne?
Jinak se bude dát na googlu někde něco hotového najít.
peta
Profil
Alois Marhoul
princip:
- sledujes pocet pismen v inputu
- jakmile presahne 3 pismenka, zavolas JS Ajaxem pozadavek na php soubor, ten se stahne na pozadi a zpracuje, pak zobrazi.

moznosti zasilani dat: JS httpRequest / IFRAME.src / SCRIPT.src / IMG.src cookies / JavaApplet ...
http://www.volny.cz/peter.mlich/www.htm#msub13
- ajax minichat
http://www.volny.cz/peter.mlich/www.htm#mssub16
Alois Marhoul
Profil *
Předpokládám, že kompletní HTML a JS se dá použít například z tohoto: http://interval.cz/clanky/google-suggest-aneb-naseptavac-s-xmlhttprequ est/

Jak by měl ale vypadat PHP skript? Doslova by měl vracet:
sendRPCDone(frameElement, "interval",
new Array(
"interval international",
"interval",
"interval training",
...),
new Array(
"2,190,000 results",
"17,100,000 results",
"1,750,000 results",
...),
new Array(""));


A ještě jeden dotaz. Vyplatí se uvnitř skriptu data tahat přímo z DB nebo je mít někde mimo (v texťáku?)
luka
Profil *
http://tomcoote.co.uk/AutoSuggestBox.aspx
peta
Profil
luka Ano, i to je reseni.
Ma to vsak tu chybu, ze pri kliku mimo select, select nezhasne a je treba vybrat jednu z moznosti. (ve FF)

Alois Marhoul
Je mozne vyhnout se Ajaxu takovou fintou. Zkombinujes priklad od Luka.
Tam je to teda resene divne, pres Array, pouzil bych spise Object, ale slo by to :)
Soubor countrycodes.js si udelas jako PHP script (header(charset=text/javascript) viz cz.php.net/header), ktery vygeneruje JS soubor. Tento JS soubor si pak nalinkujes normalne a pouzijes. Vyhoda je, ze se to bude pekne kesovat a pomoci PHP to muzes vypsat primo z databaze.
Kdezto tamto reseni je ulozeny JS.

Pak muzes pouzit ten ajax, ale zamezit mu, aby se volal pro kazde pismenko. Tam ti pak stoupa prenos. Opet muzes zkombinovat s Luka resenim. Muzes jej zavolat jen a prave tehdy, kdyz jsou pismenka 3. Ulozis si kompletni vysledek hledani (coz muze byt docela velke pole, ale tak pri 3 pismenkach snad uz ne ; kazdopadne na tom nesejde, protoze jej stejne budes chtit) a pridavanim pismenek si to budes tridit uz v JS.

Co se tyce textaku, tak to je takto.
Databaze je program spusteny v pameti. Do teto pameti. Servery maji obvykle specialni diskovou pamet, kde maji kompletni databazi. Tj, pozadavek na databazi je vyresen rychleji nez posilani souboru z disku.
Je mozne nastavit databazi do souboru, pak je to stejne.
A jeste se dela to, ze kompletni disk je v pameti, pak na tom nezalezi. Vsechno ma stejnou dobu cteni.

Vyhoda textoveho souboru je jen v tom, ze tam mas kompletni data a nemusi se nic tridit, staci ho jen poslat. Viz reseni Luka, tam je to zas primo v JS. Jen bych pouzil objekt
pole = {
'EN' : "Anglie",
'CZ' : "Cesko"
}
alert(pole['CZ']);
peta
Profil
jsem si s tim trosku hral, s verzi od Luke, tak se muzes inspirovat
http://peter-mlich.wz.cz/x/ww/js/JSpriklady.htm
- Live Search
Alois Marhoul
Profil *
Bohužel jste mi odpověděli trochu komplikovaně - nevyznám se v tom.

Když to vezmu čistě podle příkladu: http://interval.cz/clanky/google-suggest-aneb-naseptavac-s-xmlhttprequ est/

Jak by tady měl přesně vypadat skript vracející "našeptávané výsledky".
Schmutzka
Profil
Sám jsem tento problém řešil a našel jsem následující (funguje v Opeře, FF a IE 7+):
http://www.eatdrinksleepmovabletype.com/tutorials/creating_a_google_su ggeststyle_search/

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

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

0