Čo si myslíte, aké zložité je urobiť stránkovanie záznamov, ktoré môžete vidieť na nasledujúcom príklade ?
S mojou PHP triedou je to veľmi jednoduché. Ak chcete vedieť ako na to, tak čítajte ďalej.
Nebudem tu do detialov opisovať ako to funguje, len uvediem nejaké príklady použitia a na zvyšok tu máte zdrojáky ;).
Takže najprv kód z hore uvedeného príkladu. Máme pole so 150 záznamami a vypisujeme ich po 10 záznamov na stránku. O to ktorá stránka sa má zobraziť a takisto aj o vygenerovanie „stránkovača“ sa stará objekt triedy MyPaginator
.
require('MyPaginator.class.php');
$i = 1;
/**
* pole $a bude obsahovať všetky záznamy,
* ale my budeme vypisovať len 10 záznamov na stránku
*/
for($i = 1; $i <= 150; $i++) {
$a[] = 'Záznam číslo ' . $i;
}
/**
* vytvorenie novej inštancie "stránkovača"
* prvý argument určuje celkový počet záznamov
* druhý argument určuje počet záznamov na stránku
*/
$paginator = new MyPaginator($i-1, 10);
/**
* vypísanie html kódu pre stránkovač
*/
$paginator->Render();
/**
* vypísanie konkrétnych záznamov na základe údajov zo stránkovača
*/
for($j = 0; $j < $paginator->ItemsPerPage; $j++) {
echo $a[$paginator->Offset+$j] . "
\n";
}
$paginator->Render();
?>
Tu máte celý zdroják príkladu a zdroják triedy MyPaginator.
Vzhľad stránkovača si môžete upraviť pomocou CSS, alebo samotné html, ktoré sa generuje môžete zmeniť úpravou metód Render()
a PrintIndex()
.
Ak je vám moj stránkovač povedomý, tak vedzte, že som sa inšpiroval QPaginator
om z výborného frameworku Qcodo, avšak ten môj sa dá použiť samostatne…
Príklad využitia pri SQL dotaze
Ukážem čiste len príklad selectu. Predpokladá sa, že $objPaginator
už bol inicializovaný s celkovým počtom záznamov a s počtom záznamov na stránku.
$sqlQuery = printf("SELECT * FROM tabulka LIMIT %s, %s", $objPaginator->Offset, $objPaginator->ItemsPerPage);
Uvedené príklady sú síce jednoduché, ale verím, že na pochopenie toho ako to funguje sú postačujúce ;). Ak máte nejaké otázky tak do komentárov s nimi!
Stránkovanie vo WordPresse
WordPress poskytuje pre stránkovanie podobnú funkciu, ktorá dokáže vygenerovať linky na jednotlivé podstránky či už ako HTML linky, HTML zoznam s linkami, alebo PHP pole… Funkcia sa volá paginate_links.
Pridaj komentár