Scripts

Paginanummeringsfunctie

Ik weet wat je nu denkt: de zovéélste paginanummering. Dat kan wel zo zijn, maar de paginanummeringscripts die ik heb gezien hier, kloppen grotendeels van geen kanten. Bovendien zijn ze op de lange termijn niet echt handig. Dit script kun je met én zonder database gebruiken. Het enige wat de functie vraagt is het aantal pagina's en de huidige pagina ;-). In het voorbeeld is gebruik gemaakt van het alfabet; 10 letters per pagina. Het voorbeeld is dus zónder database. Onderaan de functie staan twee voorbeelden: eentje mét database, eentje zonder. Haal er je voordeel uit, zou ik zeggen ;-).

paginanummeringsfunctie
<?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);
?>

Reacties

0
Nog geen reacties.