Autor Zpráva
anonymníí
Profil *
Ahoj,

chtěl bych se zeptat na radu, jak řešit co nejefektivněji našeptávání. Mám v databázi cca 6500 záznamů.

Napadla mě asi nejjednodušší věc, která se nabízí, data si z DB vybrat, uložit do pole a dotazovat se na isset(session[index]). Ale nevím, jestli neexistuje i lepší řešení.

AJAXem se dotazovat po každém stisku klávesy mi přijde strašně zdlouhavé, hlavně jeto moc dotazů (beru li v potaz, že člověk píše a k tomu ještě třeba dost rychle). Jak se toto řeší?


Pardon, překlikl jsem s v kategorii, prosím o přesun do PHP.

Děkuji.


Moderátor Joker: Přesunul jsem
aDAm
Profil
třeba tak že neposíláš každý úder klávesnice ale dáš si tam timeout a třeba pokud uživatel 2sec nepíše tak pošleš dotaz na server.
Str4wberry
Profil
Další možnost je rozdělit si položky podle počátečních písmen, to máme průměrně 250 záznamů na jedno písmeno. Při zadání prvního písmena si těchto cca 250 záznamů předáte do JavaScriptu. A dál se už bude hledat na straně klienta, takže to další dotazy generovat nebude.

Bylo-li by 250 záznamů moc, můžete obdobný seznam stahovat až po zadání více písmen a do té doby nic nenašeptávat.
aDAm
Profil
Mě by zajímalo jak to má udělané třeba google a jeho našeptávání adres. Přiřadil jsem si jeho našeptávač poli a sotva začnu psát tak už mě to sází tipy co by to asi mohlo být a přitom v konzoli není zaznamenán žáden request.
Kajman
Profil
aDAm:
A nemáš tam jen díky prohlížeči historii vstupů do inputů se stejným jménem? Nebo používá websockety, nebo jak se to jmenuje.
aDAm
Profil
jj viděl bych to asi na websockety. ale responze je neskutečně rychlá.
peta
Profil
* LIMIT - omezi pocet radku sql dotazu, treba 20 je takove pekne cislo
* Obvykle se vyhledava pri 2 a vice pismenech, pokud chces zobrazovat vsechny moznosti bez limitu
* Muzes si stahnout na zacatku vysledky prvnich 10 radku pro kazde pismeno.
Bez diakritiky je to 26 * 10 = 260 radku, 260 * 100 pismen na radek mas 26k, jako takovy mensi obrazek.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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