Er loopt iets mis met mijn paginate funtie.
Alles gaat goed totdat er meerdere pagina's komen en er pagina's worden weggelaten.

<?php
function paginate($limiet, $pagina, $total_pages, $html)
{
// Initial page num setup
if($pagina == 0)
{
$pagina = 1;
}

$prev = $pagina - 1;
$next = $pagina + 1;

$lastpage = ceil($total_pages/$limiet);
$LastPagem1 = $lastpage - 1;

$paginate = '';

if($lastpage > 1)
{

$paginate .= '<div class="paginate">';

// Previous
if ($pagina > 1)
{
$paginate .= '<a href="'.$html.'?id='.$_GET['id'].'&amp;page='.$prev.'"> Vorige</a>';
}
else
{
$paginate.= '<span class="disabled"> Vorige </span>';
}

$stages = "";

// Pages
if ($lastpage < 7 + ($stages * 2)) // Not enough pages to breaking it up
{
for ($counter = 1; $counter <= $lastpage; $counter++)
{
if ($counter == $pagina)
{
$paginate .= '<span class="current">'.$counter.'</span>';
}
else
{
$paginate .= '<a href="'.$html.'?id='.$_GET['id'].'&amp;page='.$counter.'"> '.$counter .'</a>';
}
}
}
elseif($lastpage > 5 + ($stages * 2)) // Enough pages to hide a few?
{
// Beginning only hide later pages
if($pagina < 1 + ($stages * 2))
{
for ($counter = 1; $counter < 4 + ($stages * 2); $counter++)
{
if ($counter == $pagina)
{
$paginate.= '<span class="current"> '.$counter.' </span>';
}
else
{
$paginate.= '<a href="'.$html.'?id='.$_GET['id'].'&amp;page='.$counter.'"> '.$counter.' </a>';
}
}

$paginate.= '...';
$paginate.= '<a href="'.$html.'?id='.$_GET['id'].'&amp;page='.$LastPagem1.'"> '.$LastPagem1.' </a>';
$paginate.= '<a href="'.$html.'?id='.$_GET['id'].'&amp;page='.$LastPagem1.'"> '.$lastpage.' </a>';
}
elseif($lastpage - ($stages * 2) > $pagina && $pagina > ($stages * 2))
{
$paginate.= '<a href="'.$html.'?id='.$_GET['id'].'&amp;page=1"> 1 </a>';
$paginate.= '<a href="'.$html.'?id='.$_GET['id'].'&amp;page=2"> 2 </a>';

$paginate.= '...';
for ($counter = $pagina - $stages; $counter <= $pagina + $stages; $counter++)
{
if ($counter == $pagina)
{
$paginate.= '<span class="current"> '.$counter.' </span>';
}
else
{
$paginate.= '<a href="'.$html.'?id='.$_GET['id'].'&amp;page='.$counter.'"> '.$counter .'</a>';
}
}

$paginate.= '...';
$paginate.= '<a href="'.$html.'?id='.$_GET['id'].'&amp;page='.$LastPagem1.'"> '.$LastPagem1.' </a>';
$paginate.= '<a href="'.$html.'?id='.$_GET['id'].'&amp;page='.$lastpage.'"> '.$lastpage.' </a>';
}
else
{
$paginate.= '<a href="'.$html.'?id='.$_GET['id'].'&amp;page=1"> 1</a>';
$paginate.= '<a href="'.$html.'?id='.$_GET['id'].'&amp;page=2"> 2</a>';
$paginate.= '...';
for ($counter = $lastpage - (2 + ($stages * 2)); $counter <= $lastpage; $counter++)
{
if ($counter == $pagina)
{
$paginate.= '<span class="current"> '.$counter.' </span>';
}
else
{
$paginate.= '<a href="'.$html.'?id='.$_GET['id'].'&amp;page='.$counter.'"> '.$counter.' </a>';
}
}
}
}

// Next
if ($pagina < $counter - 1)
{
$paginate.= '<a href="'.$html.'?id='.$_GET['id'].'&amp;page='.$next.'"> Volgende</a>';
}
else
{
$paginate.= '<span class="disabled"> Volgende</span>';
}

$paginate.= '</div>';

}

return $paginate;
}

?>

Bedankt Kris, dit kan ik wel gebruiken. Ik doe er misschien nog enkele kleine aanpassingen aan om dat ik eigenlijk nog niet echt met class bezig ben maar ik bewaar deze zeker voor later. Ik ga er nu één functie van proberen maken. Bedankt.
@Jasper, dit is slechts een class en geen OO, je kunt ook classes gebruiken zonder OO, maar gewoon als verzameling van functies. Maar daar zijn tegenwoordig eigenlijk namespaces uitgevonden...
Ja maar ik vind dat het dan ook niet netjes staat in mijn code.. :s Plotseling zo'n class tussen mijn functies.
PHP Jasper op 09/01/2012 20:58:43

Ja, deze kijkt na hoeveel pagina's er een aantal pagina's moeten weggestoken worden. Zoals je ziet word stages ook aangepast naar een andere waarde a.d.h.v. het blokje waar het zich bevind.

Maar je zet stages eerst naar "" en dan gebruik je het in een berekening. Dat kan natuurlijk nooit, want stages is op dat punt ALTIJD "" en ($stages * 2) is dus altijd 0 (of eigenlijk niet gedefinieerd). Wat je daar dus doet is simpelweg fout, of op zijn minst overbodig.



Toevoeging op 09/01/2012 22:08:42:

En verder wordt stages ook nooit meer aangepast in je code, terwijl je het regelmatig gebruikt. Ik vermoed dus dat daar je fout zit, ook al wil je er zelf blijkbaar niet eens naar kijken.
Erwin, deze code is al een tijdje oud en ik heb deze ooit al eens bewerkt.. Geen idee of de fout er toen al in zat. Maar nu was ik dit lapje code aan het opkuisen en ik dacht dat er gewoon ergens een stomme fout zat maar blijkbaar is heel de opzet fout?
Of de hele opzet fout is weet ik niet, wat in elk geval fout is is de initialisatie van $stages. Ik heb het idee dat dat ergens uit berekend moet worden. Alleen hoe dat weet ik niet zo 1-2-3, daarvoor ken ik je code niet goed genoeg uiteraard.

Reageren