Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
PHP
Výpis seznamu po stránkach
16. května 2001, 00.00 | Jistě to znáte. Chcete vypisovat na svých stránkách nějaké záznamy, ale seznam je delší než by měl být. Řešením je rozdělit záznamy a přidat odkazy na předcházající a další. Jak na to vám ukáže tento článek..
ÚvodUrčite poznáte situáciu, keď na svojom webe používate databázu a jej obsah potrebujete zobraziť (použijem môj obľúbený príklad - zoznam hudobných skladieb). Kým je počet záznamov malý, tak sa vojde na stránku. Ale ak databáza začne narastať, tak jej výpis jednak narušuje pohodlné prezeranie stránky alebo jej vzhľad, ale taktiež predlžuje reakciu web servera a návštevníkovi sa stránka načíta pomaly. Vypísanie kratšieho zoznamu, resp. jeho časti by problém vyriešilo. Ale aký kratší, akú časť ?
Na tieto otázky existuje odpoveď a to je vypisovanie zoznamu po stránkach. Určite tento spôsob poznáte, pretože je ním vypisovaný zoznam výsledkov hľadania vo vyhľadávacích serveroch, napr. altavista alebo google. Stránka neobsahuje zoznam stoviek alebo tisícov položiek (= liniek na stránky spĺňajúce vaše vyhľadávacie kritériá), ale tieto položky sú zoskupené do stránok napr. po 10 na jedno zobrazenie a k ďalším položkám sa je možné doklikať.
Definovanie spôsobu výpisu
Tu sa dostávame k definovaniu, ako má vyzerať spôsob výpisu zoznamu. Povedzme, že chceme, aby v tzv. "výberovej lište" bola možnosť kliknúť:
- na poradové číslo strany
- na nasledujúcu stranu (používa sa označenie Next, >> alebo Ďalšia)
- na predošlú stranu (používa sa označenie "Prev", << alebo Predošlá)
(prvky ako začiatok zoznamu alebo koniec nemusíme implementovať nakoľko sú predstavované prvou a poslednou stranou)
Potom by sa zobrazil samotný výpis obsahujúci preddefinovaný počet položiek. Na záver opäť zobrazíme výberovú lištu, aby sa zoznam dal prezerať aj keď je návštevník webu na jeho dolnej časti a nemusel sa vrátiť späť na začiatok stránky. A aby sme sa ukázali ako flexibilní programátori, tak ten počet záznamov na stránke urobíme univerzálny - nastavíme ho do premennej. Takto bude možné časom počet modifikovať bez nutnosti zmeny kódu a teda prispôsobiť zmeneným podmienkam. Napríklad je iné vypisovať na stránke zoznam článkov alebo zoznam linkov. Článkov sa tam vojde (ak uvažujeme rozumnú mieru) tak 10, ale linkov aj 50.
Jednoduchý zoznam
Než začneme programovať, tak uvediem príklad databázy, ktorú budem ďalej zobrazovať:
|
Nastavenie premenných
Pomenujem základný skript klasicky index.php3, pre Vaše použitie nezabudnite premenovať aj odkazy vo vnútri ďalších častí skriptu. Najprv začnem s prípravou premenných, pretože napríklad pri prvom volaní skriptu nie je definovaná aktuálna strana. A tiež musíme inicializovať premennú počet položiek zoznamu na jednu stranu, zistiť celkový počet stránok zoznamu. Vypočítame skutočný počet položiek na stránke, pretože na poslednej stránke je tento počet rozdielny:
|
Je použitý jednoduchý select, ale v reálnom webe tam určitú pribudnú aj podmienky výberu, napríklad podľa určitých kritérií alebo dátumu (nesmieme potom zabudnúť rovnaké podmienky uviesť aj pri zobrazovaní). Čo sa týka použitých výpočtov, tak mali by byť zrejmé. Využívame podmienený operátor pre "ošetrenie" situácie, keď je na každej stránke zobrazený iba jeden záznam a situáciu, ak zobrazujeme poslednú stránku. Pre lepšie zoznámenie sa s výpočtami odporúčam experimentovať s premennou $rozsah a s počtom záznamov v databáze.
Zobrazenie výberovej lišty
Teraz si vytvoríme spomínanú "výberovú lištu", ktorá bude slúžiť na priamy výber stránky a na prezeranie zoznamu o stránku vpred a späť. Navyše zvýrazníme aktuálnu stránku väčším písmom:
|
Ja som použil << ako prechod na predošlú stránku a >> ako prechod na nasledujúcu. Kľudne však môžete pouziť Spět a Dále alebo Prev a Next alebo obrázky. Podobne namiesto vypísania čísla môžete zobraziť obrázok, taktiež zvýrazniť aktuálnu stránku napríklad inou farbou.
Zobrazenie zoznamu
Dostávame sa k finále - zobrazeniu časti zoznamu, t.j. tých záznamov, ktoré patria na aktuálnu stránku. Ktorá to je, to určuje hodnota $stranka. Opäť to nebudem komplikovať, a pre zobrazenie použijem jednoduché echo:
|
Kľúčová časť skriptu je podmienka, ktorá určuje, či načítaný záznam patrí danej stránke. Výhodou tohto riešenia je, že je prehľadné. Taktiež nezáleží na tom, či záznamy v databáze majú ID pekne v poradí za sebou (čo pri mazaní alebo použití kritérií nemusí byť pravda). Nevýhodou je, že prechádza všetky záznamy v databáze. Avšak pokiaľ zobrazujeme špecifický úsek databázy, tak sa dá predpokladať, že návštevník webu si ho vyžiadal (či lepšie povedané vyklikal), takže je predpoklad, že je ochotný si počkať na jeho zobrazenie. Z mojej skúsenosti však nemám problém s rýchlosťou zobrazenia. Ak by predsa len rýchlosť bola problém, tak odporúčam sa inšpirovať článkom Raz denne, či komentármi k nemu, a predgenerovať si stránky vopred.
Možnosti rozšírenia
A sme na konci našeho skriptu. Kvôli zvýšeniu užívateľského komfortu odporúčam znova zaradiť časť skriptu "výberová lišta". Medzi ďalšie možnosti rozšírenia patrí rôzne usporiadanie zoznamu alebo vypisovanie podľa kritérií. Ak Vás ešte niečo napadne, tak nezabudnite napísať do komentárov k článku.
Želám veľa úspechov pri zobrazovaní Vašich databáz po stránkach.
Diskuse k článku
-
25. listopadu 2012
-
30. srpna 2002
-
10. října 2002
-
4. listopadu 2002
-
12. září 2002
-
25. listopadu 2012
-
28. července 1998
-
31. července 1998
-
28. srpna 1998
-
6. prosince 2000
-
27. prosince 2007
-
4. května 2007