Mozes i sesijama ali je bolje da prenosis varijablu.
Evo najprostijeg primera (kompletnog sistema) a nekada mogu i
hint-ovi da pomognu
Imas varijablu $page koja je na pocetku uvek 1 a kasnije $_GET['page'] jer je prenosis kao varijablu, onda racunas koliko imas recorda u toj tabeli (to radis na pocetku strane u svakoj egzekuciji scripta jer je moguce da se broj recorda promeni izmedju 2 egzekucije)
select count(*) from ...
i dobije, na primer $total_records = 475;
ako recimo odlucis da imas to 50 recorda po strani, imas varijablu
$records_per_page = 50;
i racunas
$total_pages = ceil($total_recors / $records_per_page);
znaci dobicemo u primeru ceil(9,5) sto mu daje 10;
i onda poredjas linkove
for ($i = 1; $i <= $total_pages; $i++)
echo "<a href='".$_SERVER['PHP_SELF']."?page=".$i."'>$i</a> ";
dobices linkove poredjanje u fazonu: 1 2 3 4 5 6 7 8 9 10
kada neko klikne na recimo 3 prebacuje se varijabla $_GET['page'] = 3
da bi provalio odakle-dokle treba ra radis query, moras jos malo da racunas:
$from = ($_GET['page']-1) * $records_per_page
znaci, za $page = 1 dobijes $from = 0, za $page = 2, dobijes $from = 50... itd
a onda radis query
SELECT * FROM ... LIMIT $from, $records_per_page
i to bi bilo to - nije uopste komplikovano.
Hint: moras da pazis jer je moguce da imas recimo 3045 strana sto je totalno suludi prikazati kao linkove. Dakle, treba da odlucis i koje strane prikazujes pa mozes da uvedes jos i $display_page_count = 20 pa ce i se uvek prikazivati samo 20 strana ako uradis recimo
$page_start = $page - intval ($display_page_count / 2);
$page_end = $page + intval ($display_page_count / 2);
ali moras da pazis da ne odes u minus, jer za $page = 3 dobices $page_start = -7 sto je glupo, pa rasi proveru
if ($page_start < 1) $page_start=1;
ali onda opet moras da promenis i $page_end = $page_start + $display_page_count
isto tako moras da radis proveru da li je $page_end > $total_pages... alo to mozes verovatno i sam, slicno je kao za start.
// napomena: ovo je pisano ovako iz glave, mozda ima neka slovna greska, da ne bude posle "kod ne radi". Ovo sam napisao ovako opsirno zato sto je dosta ljudi pitalo upravo ovo.
Goran Pilipović fka bluesman