Gdy pisalem forum oparte o pliki (odpowiedzi byly w tablicy z pliku) to aby dzielic posty na strony robilem tak:
$posty - tablica sekwencyjna z postami pobrana z pliku
$odp_na_str - ilosc odpowiedzi na jednej stronie
$_GET['strona'] - numer strony wyslany przez klienta (poczawszy od 0)
<?php ... for($i = $odp_na_str * $_GET['strona']; $i < $odp_na_str * ($_GET['strona'] + 1) and $i < count($posty); $i++){ // kod petli gdzie $posty[$i] to tresc odpowiedzi } ... ?>
W przypadku gdy posty sa w tablicy to byl to chyba najlepszy i najszybszy sposob na pobranie konkretnej ilosci postow dla konkretnej strony.
Natomiast gdy mam korzystac z bazy to widze kilka sposobow na pobranie kilku wierszy, ale kazdy ma jakas wade.
posty - nazwa tabeli w ktorej kazdy wiersz zawiera dane odpowiedzi
$odp_na_str - ilosc odpowiedzi na jednej stronie
$_GET['strona'] - numer strony wyslany przez klienta (poczawszy od 0)
SPOSOB 1.
<?php ... $result = mysql_query('SELECT * FROM posty WHERE post_id > '.($odp_na_str * $_GET['strona']).' AND post_id <= '.($odp_na_str * ($_GET['strona'] + 1))); // kod petli gdzie $post to tablica z danymi odpowiedzi } ... ?>
powyzszy sposob sprawdza sie gdy kolumna post_id jest kluczem podstawowym typu AUTO_INCREMENT
zaleta tego rozwiazania jest mala ilosc pobieranych zasobow
wada jest to, ze nie mozna usuwac odpowiedzi z bazy
SPOSOB 2.
<?php ... // kod petli gdzie $post to tablica z danymi odpowiedzi } ... ?>
powyzszy sposob jest bardziej uniwersalny, ale pobiera cala tabele z bazy
Czy jest jakis inny lepszy sposob dzielenia postow z bazy na strony w przypadku takiego prostego forum
