czy ja wiem czy prościej? moim zdaniem zdecydowanie nie.
Brak zadowalającej odpowiedz zmusił mnie do poświecenia sporo czasu by efekt był zadowalający.
Poniżej przestawiam funkcję która paginuje wyniki z bazy i moim skromnym zdaniem działa prawidłowo (mogę się mylić dużo czasu = dużo pomyłek)
Kod PHP:<?php
function paginacja($cnt, $start=5)
{
$page = $_GET['page'];
if($page == 0 OR
empty($page)) {
$page = 1;
}
$show = $start*$page-$start;
$paginacjaony = $cnt/$start;
if(($paginacjaony < round($paginacjaony)) OR
($paginacjaony > round($paginacjaony))) {
$paginacjaony_add = ($paginacjaony+1);
}
elseif($paginacjaony == round($paginacjaony)) {
$paginacjaony_add = $paginacjaony;
}
if($page > 1)
{
$prewiev = '<input type="button" onclick="self.location.href='?page='.($page-1).''" value="Poprzednia">';
}
else
{
$prewiev = '<input type="button" disabled="disabled" value="Poprzednia">';
}
if($page > $paginacjaony_add)
{
$error = '<font color="red"><b>Hola Hola troche zadaleko zaszedłeś!</b></font>';
}
$i = 1;
while($i <= $paginacjaony_add)
{
if($page == $i)
{
$option .= '<option selected value="'.$i.'">'.$i.'</option>'."n";
}
else
{
$option .= '<option value="'.$i.'">'.$i.'</option>'."n";
}
$i++;
}
if($page < $paginacjaony)
{
$next = '<input type="button" onclick="self.location.href='?page='.($page+1).''" value="Następna">';
}
else
{
$next = '<input type="button" disabled="disabled" value="Następna">';
}
$panel = '<br />
<form method="GET">
'.$prewiev.'
<select size="1" name="page">
'.$option.'
</select>
<input type="submit" value="PrzejdĽ">
'.$next.'
</form>';
$paginacja['error'] = $error;
$paginacja['panel'] = $panel;
$paginacja['page'] = $show;
$paginacja['ile'] = $start;
return $paginacja;
}
?>
<?php
paginacja($suma_wszystkich_rekordów_w_bazie , $ilość_wyświetlanych_wpisów_na_jednej_stronie*)
?>
* - optymalne (nie podając na stronie będzie się wyświetlać po pięć wyników)funkcja zwraca nam 4 zmienne w tablicy, odwołujemy się do niej w poniższy sposób:
<?php
//$cnt - liczba wszystkich rekordów
$paginacja = paginacja($cnt);
?>
Gdzie:$paginacja['error'] - błąd gdy ktoś podał stronę która przekracza nasz zakres
$paginacja['panel'] - panel przełączania stron
$paginacja['page'] - liczba od której wyświetlanie rekordów ma być rozpoczęta
$paginacja['ile'] - ilość wyświetlanych rekordów na pojedynczej stronie
Przykład działania:link