<?php
function pageNumbers($pages, $page)
{
    $ret = '';
    if($pages > 0) {
        if($page > $pages) {
          return false;
        } else {
	        if($page < 2)
	            $ret .= "&laquo; | ";
	        else
	            $ret .= "<a href='?pag=".($page-1)."'>&laquo;</a> | ";
	        
	        if($page < 2)
	            $ret .= "Eerste | ";
	        else
	            $ret .= "<a href='?pag=0'>Eerste</a> | ";
	        
	        if($page > 4) {
	            $puntjesv = '... ';
	            $min = $page-4;
	            $max = $page+4;
	            
	            if($page+4 >= $pages) {
	                $max = $pages;
	                $puntjesn = '';
	            } else {
	                $max = $page+4;
	                $puntjesn = '...';
	            }
	            
	        } elseif($page <= 4) {
	            $puntjesv = '';
	            $min = 1;
	            
	            if($page+4 >= $pages) {
	                $max = $pages;
	                $puntjesn = '';
	            } else {
	                $max = $page+4;
	                $puntjesn = '...';
	            }
	        }
	        
	        $ret .= $puntjesv;
	        
	        for($i=$min;$i<=$max;$i++) {
	            if($page == $i)
	                $ret .= "[".$i."] ";
	            else
	                $ret .= "<a href='?pag=".$i."'>".$i."</a> ";
	        }
	        
	        $ret .= $puntjesn;
	        
	        if($page == $pages)
	            $ret .= " | Laatste";
	        else
	            $ret .= " | <a href='?pag=".$pages."'>Laatste</a>";
	        
	        if($page == $pages)
	            $ret .= " | &raquo;";
	        else
	            $ret .= " | <a href='?pag=".($page+1)."'>&raquo;</a>";
	    }
    }
    
    return $ret;
}

// ------------------------------------------- //

// # VOORBEELD MET DATABASE # //

$showRecords = 20; // aantal records per pagina

// als je 'pag' hieronder aanpast, moet je dat in de functie ook doen!
if(isset($_GET['pag'])) {
  $pag = $_GET['pag'];
  $start = $_GET['pag'] * $showRecords;
} else {
  $pag = 1;
  $start = 1;
}

// totale query
$tQuery = "SELECT * FROM tabel";
$tResult = mysql_query($tQuery);

if($tResult && mysql_num_rows($tResult) > 0) {
  $pages = ceil(mysql_num_rows($tResult)/$showRecords)-1;
} else {
  $pages = 0;
}

// query van de data voor deze pagina
$oQuery = "SELECT * FROM tabel LIMIT ".$start.",".$showRecords;
$oResult = mysql_query($oQuery);

if($oResult && mysql_num_rows($oResult) > 0) {
  // weergave van data, gebruik $oResult
} else {
  // foutafhandeling
}

// echo de paginanummering
echo pageNumbers($pages, $page);

// ------------------------------------------- //

// # VOORBEELD ZONDER DATABASE # //

$showRecords = 10; // aantal records per pagina

// als je 'pag' hieronder aanpast, moet je dat in de functie ook doen!
if(isset($_GET['pag'])) {
  $pag = $_GET['pag'];
  $start = $_GET['pag'] * $showRecords;
} else {
  $pag = 0;
  $start = 0;
}

$letters = range("a", "z");
$pages = ceil(count($letters)/$showRecords)-1;
$i = 0;
foreach($letters as $lid => $letter) {
    if($lid >= $start && $i <= $showRecords) {
        echo "Letter ".($lid+1)." is ".$letter.".<br />";
        $i++;
    }
}

// echo de paginanummering
echo pageNumbers($pages, $page);
?>