<?php
function navigatie($max_items,$aantal_items,$huidig,$url) {

  $paginas = ceil($aantal_items / $max_items);
  // Het aantal nodige pagina's berekenen

  if($huidig > $paginas) {
    // Er is een hoger getal opgegeven dan er pagina's zijn
    $huidig  = $paginas;
    // We zetten $huidig op de laatste pagina
  }
  
  $navigatie	= '';
  if($aantal_items > $max_items) {
    //Enkel tonen als er wel een tweede pagina is
    
    $navigatie  = '<form action="'.$_SERVER['REQUEST_URI'].'">';
    // $navigatie bevat uiteindelijk de knopjes e.d. zelf. Deze zitten in een formulier,
    // dat hierboven begint
    
    $navigatie .= '<strong>Navigatie:</strong>'."\n";
    // Voor de mensen die nog niet zouden doorhebben dat die cijfertjes wel degelijk
    // een betekenis hebben
    
    $url = explode('[--nav--]',$url);
    // We exploden op [--nav--]. Dan hebben we het stukje ervoor en erna.
    // Maar mocht je een slechte parameter opgeven, dan krijg je lege output (false).
      if(count($url) != 2) {
        return false;
      }
      // Zoals je ziet :p
    
    if($huidig != 1) {
      // Als we niet op de eerste pagina zijn...
      $navigatie .= '<input type="button" value="&lt;&lt;" onclick="window.location=\''.$url[0].'1'.$url[1].'\'" />&nbsp;'."\n";
      $navigatie .= '<input type="button" value="&lt;" onclick="window.location=\''.$url[0].($huidig-1).$url[1].'\'" />&nbsp;'."\n";
      // .. dan komt er een "eerste" en "vorige" knoppie
    }
    
    $navigatie .= '<select onchange="window.location=\''.$url[0].'\' + this.value + \''.$url[1].'\'">'."\n";
    // Dit is de keuzelijst zelf. Wanneer je een cijfer aanklikt wordt het formulier automatisch verzonden.
    // Gebruikers zonder JavaScript kunnen het schudden ;-)
    
    for($i = 1; $i < ($paginas + 1); $i++) {
      $navigatie .= '  <option value="'.$i.'"'.($i == $huidig ? ' selected' : '').'>'.$i.'</option>'."\n";
      // Voor iedere pagina mag er een nummertje, maar je begint bij 1 en eindigt dus ook bij
      // het aantal pagina's.
    }
          
    $navigatie .= '</select>'."\n";
    // En we sluiten de keuzelijst netjes af zoals het hoor.

    if($huidig != $paginas) {
      // Als we ons niet op het aantal pagina's bevinden (de laatste zoals dat ook wel heet),
      // dan krijg je ook een "volgende" en "laatste" knop te zien.
      
      $navigatie .= '&nbsp;<input type="button" value="&gt;" onclick="window.location=\''.$url[0].($huidig + 1).$url[1].'\'" />&nbsp;'."\n";
      $navigatie .= '<input type="button" value="&gt;&gt;" onclick="window.location=\''.$url[0].($paginas).$url[1].'\'" />'."\n";
      // Inderdaad :]
    }
  }
        
  $begin = (($huidig-1)*$max_items);
  // Over het algemeen wordt hiermee brol uit een database gelezen, dus de beginwaarde voor je query =
  // (deze pagina - 1) * aantal items per pagina
  // vb.: we bevinden ons op pagina 3 met een $max_items van 30,
  // dan komt er in je LIMIT van je query: LIMIT 60,30
  
  $ret['navigatie']  = $navigatie;
  $ret['begin']    = $begin;
  $ret['max']      = $max_items;
  $ret['huidig']    = $huidig;
  $ret['paginas']    = $paginas;
  // Dit is de output.
  
  return $ret;
}
?>