Javascript...
Sziasztok!
Nos nem is tudom, hol kezdjem a problémám leírását, mert ez nem egyszerű. Talán legjobb, ha az elején kezdem.
Van egy MySQL adatbázisom, amiben rengeteg sor leledzik. A javascriptet még csak most tanulgatom, a PHP viszont eléggé jól megy.
Olyasmit szeretnék elérni, hogy ha az ember keres egy textfieldben valamit a táblázatban (lehet több oszlop szerint keresni(pl: név, kód...), ahogy beírja az első betűt (pl.: "K"), az oldal azon frame-je, amiben a tblázat van, odaugrik a K betűvel kezdődő nevűek sorához. Ha a felhasználó írja tovább a keresőszót ("Kov"), akkor már a Kov-val kezdődő sorokhoz ugrik a táblázat, így könnyebben böngészhető keresőt tudnék csinálni ("Kovács István")...
Szóval ez lenne a bajom. Gondoltam, hogy bookmarksszal kellene megcsinálni, de nem tudom pontosan hogyan...
Bármifajta segítséget szívesen vennék.
Előre is köszönöm.
■ Nos nem is tudom, hol kezdjem a problémám leírását, mert ez nem egyszerű. Talán legjobb, ha az elején kezdem.
Van egy MySQL adatbázisom, amiben rengeteg sor leledzik. A javascriptet még csak most tanulgatom, a PHP viszont eléggé jól megy.
Olyasmit szeretnék elérni, hogy ha az ember keres egy textfieldben valamit a táblázatban (lehet több oszlop szerint keresni(pl: név, kód...), ahogy beírja az első betűt (pl.: "K"), az oldal azon frame-je, amiben a tblázat van, odaugrik a K betűvel kezdődő nevűek sorához. Ha a felhasználó írja tovább a keresőszót ("Kov"), akkor már a Kov-val kezdődő sorokhoz ugrik a táblázat, így könnyebben böngészhető keresőt tudnék csinálni ("Kovács István")...
Szóval ez lenne a bajom. Gondoltam, hogy bookmarksszal kellene megcsinálni, de nem tudom pontosan hogyan...
Bármifajta segítséget szívesen vennék.
Előre is köszönöm.
widget
Attól függően, hogy mennyire kötődsz a kinézethez, használhatsz hozzá extjs-t, ha több kontroll kell a kinézet felett, használhatsz hozzá script.aculo.us autocomplete-et (bár extjs-ben is lehet css-bűvészkedni).
Nézz szét a példák között.
Válaszd külön a keresés és találást a megjelenítéstől!
Kellett nekem egy olyan táblázat, amiben az első oszlopban található nevekben keresni lehet, azaz pozicionálni lehessen a keresési feltételnek megfelelő első sorhoz.
Sok sikertelen elmélet után megtaláltam a megfelelőt, ami annyit tesz, hogy külön kellett választani a folyamatot két fő egységre:
1.) Keresés
2.) Pozicionálás
A keresést én úgy oldottam meg, hogy amikor php-vel előkészítettem a táblázatot, akkor a táblázaton kívül, az első oszlop tartalmát, meghatározott struktúrában, beletettem egy textarea-ba (rejtettbe természetesen). Amikor betöltődött az oldal, volt egy táblázatom, meg egy textarea-m a kereshető adatokkal.
A kereshető adatok halmaza kb. így nézett ki:
{sor:0;nev:Balázs István}{sor:1;nev:Kovács István}{sor:2;nev:Kovács Tamás}
A sor azt jelölte, hogy az a név hányadik sorban van a táblázatban, a név meg egyértelmű.
A keresés úgy zajlott, hogy az első oszlop felett volt egy szövegmező, amibe ha el kezdtem gépelni (onkeyup meg egy kis setTimeout), az indexOf függvénnyel megnéztem, hogy található-e az adathalmazban egyezőség.
Például, ha valaki a Kovács- nevet kereste és beírta azt, hogy „Kov”, akkor az indexOf(„nev:Kov”) szövegrészt kerestettem. Ha volt találat a pozícióból kinyertem a sorszámot, ha nem, alert('Nincs találat!');.
Miután megvolt a sorszám, már csak be kellett azonosítani a sort és megjelníteni. A táblázat php-s előkészítése során minden <tr> azonosítónak megkapta azt a számot, ami a sor is (persze egy kis prefixel)!
Tehát ha már eljutottunk odáig, hogy megvan a találati sor száma, akkor az egyenlő volt a táblázat sorának azonosítójával. Pl.: 9. sor = <tr id=”sor_9”>
Innentől kezdve már azt csinálsz a sorral, amit csak akarsz, hiszen ismered az aznosítóját.
Mellesleg én div-be tettem a táblázatot overflow:auto-val és kiszámoltam, hogy egy sor magassága 35px, tehát ha a a sorszámom 9, akkor a divet a 9*35 re scrolloztam javascriptel.
Hát nagyjából ennyi, de azt még hozzá kell tennem, hogy a „A javascriptet még csak most tanulgatom” az lehet hogy egy kicsit gyenge lesz! :) Nekem ez így működött, kb 1500 sorig tökéletesen!
s_volenszki
ötletes
nem vagyok híve a favágó módszernak, de talán a legegyszerűbb, ajaxal folyamatos lekérdezés a beírt karakterek után. kicsit talán lassabb, de nem kell hozzá nagy js jártasság.
néhány blogon is van hasonló kereső, livesearch-nek hívják, ha jól emlékszem, arra is rá lehetne keresni, vagy a már említett extjs-es megoldás sem rossz.
egy lépéssel tovább
(PS. barátaim, ajaxszal és prefixszel)
...ajaxszal, prefixszel...
Lusta voltam kijavítani!
Bocsika...
s_volenszki