Ik wil voor een productoverzicht gebruik maken van pagina navigatie. Onderaan het overzicht moeten steeds 5 (eigenlijk 4) links naar pagina's te vinden zijn. De huidige pagina moet in het midden van deze 5 links komen te staan. Als je dus op bijvoorbeeld pagina 3 zit, dan ziet de navigatie er als volgt uit: 1 2 |3| 4 5 Ga je vervolgens naar pagina 4 dan wordt het zo: 2 3 |4| 5 6. Er zijn hier echter enkele uitzondering. Als je namelijk op pagina 1 of 2 zit, dan moet het respectievelijk |1| 2 3 4 5 of 1 |2| 3 4 5 zijn en als je op de laatste twee pagina's zit (uitgaande van 10 pagina's, dan moet het 6 7 8 |9| 10 en 6 7 8 9 |10| zijn. Dat zijn de enige uitzonderingen dus dat de huidige pagina niet in het midden staat. Er moeten dus wel 5 links blijven staan! :-)

Het is me nu wel gelukt met de uitzondering bij pagina 1 en 2, maar nog niet bij de laatste 2 pagina's. Weet iemand misschien hoe ik dit het beste kan doen?

Dit is het (test)script tot nu toe:


<?php 
include ('config.php'); 
$query_totaal = "SELECT COUNT(*) AS aantal FROM categorie"; 
$result_totaal = mysql_query($query_totaal) or die (mysql_error()); 
$row_totaal = mysql_fetch_assoc($result_totaal); 
$totaal = $row_totaal['aantal']; 
$per_pagina = 4; 
$aantal_paginas = ceil($totaal / $per_pagina); 

$pagina = isset($_GET['pagina']) && !empty($_GET['pagina']) ? $_GET['pagina'] : 1; 
$start = $per_pagina * $pagina - $per_pagina; 

$query_gegevens = "SELECT * FROM categorie ORDER BY naam LIMIT " .$start. "," .$per_pagina; 
$result_gegevens = mysql_query($query_gegevens) or die (mysql_error()); 
while ($row_gegevens = mysql_fetch_assoc($result_gegevens)) 
{ 
  echo $row_gegevens['naam']. '<br />'; 
} 
if ($pagina == 1) 
{ 
  echo '<span>Vorige pagina</span>  |'; 
} 
else 
{ 
  echo '<a href="?pagina=' .($pagina - 1). '">Vorige pagina</a> |'; 
} 

$begin = isset($_GET['pagina']) ? ($_GET['pagina']-2) : 1; 
$begin = $begin < 1 ? 1 : $begin; 
$eind = $begin + 4; 
$eind = $eind > $aantal_paginas ? $aantal_paginas : $eind; 
for($i = $begin; $i <= $eind; $i++) 
{ 
  if ($pagina == $i) 
  { 
    echo '<strong>' .$i. '</strong>'; 
  } 
  else 
  { 
    echo ' <a href="?pagina=' .$i. '">' .$i. '</a> '; 
  } 
} 

if ($pagina == $aantal_paginas) 
{ 
  echo '<span>Volgende pagina</span>'; 
} 
else 
{ 
  echo '<a href="?pagina=' .($pagina + 1). '">Volgende pagina</a>'; 
} 
?>

Reageren