<?php
class pageNavigation {
public $url;
public $max_aantal_per_pagina;
public $totaal_aantal_rijen;
public $totaal_aantal_paginas;
public $huidige_pagina;
public $standaard_sql;
public $aantal_paginanummers;
public $scheidingsteken;
/**
* @desc de constructor die een aantal dingen instelt
* @param string de standaard sql die je gebruikt, bijv: SELECT velden FROM tabel
* @param string de count-sql, deze moet zo zijn: SELECT COUNT(1) FROM tabel
* @param integer het aantal records dat op één pagina te zien is
* @param integer de huidige pagina ($_GET['pagina'])
* @param integer het aantal cijfers dat links en rechts moet worden weergegeven langs de huidige pagina
**/
public function __construct($sSql,$cSql,$max_aantal_per_pagina,$pagina = 1,$aantal_nummers_links_en_rechts) {
$this->standaard_sql = $sSql;
$this->max_aantal_per_pagina = $max_aantal_per_pagina;
$this->huidige_pagina = $pagina;
$this->aantal_paginanummers = $aantal_nummers_links_en_rechts;
$this->totaal_aantal_paginas = ceil($this->totaal_aantal_rijen/$max_aantal_per_pagina); }
public function stelUrlIn($standaard) {
$this->url = $standaard;
if(ereg('[?]',$standaard)) { $this->scheidingsteken = '&';
} else {
$this->scheidingsteken = '?';
}
}
public function geefQuery() {
if($this->totaal_aantal_rijen < ($this->huidige_pagina * $this->max_aantal_per_pagina)) {
$query = mysql_query($this->standaard_sql.' LIMIT 0,'.$this->max_aantal_per_pagina); $this->huidige_pagina = 1;
} else {
$start = (($this->huidige_pagina * $this->max_aantal_per_pagina) - $this->max_aantal_per_pagina);
$sql = $this->standaard_sql.' LIMIT '.$start.','.$this->max_aantal_per_pagina;
}
if($query) {
return $query;
} else {
return FALSE;
}
}
public function geefNummering() {
$nummering = '';
//de linkerkant
$start_links = $this->huidige_pagina - $this->aantal_paginanummers;
if($start_links <= 0) {
for($l = 1; $l < $this->huidige_pagina; $l++) {
if($l == 1) {
$nummering .= '<a href="'.$this->url.$this->scheidingsteken.'pagina=1">Eerste</a> - ';
} else {
$nummering .= '<a href="'.$this->url.$this->scheidingsteken.'pagina='.$l.'">'.$l.'</a> - ';
}
}
} else {
$nummering .= '<a href="'.$this->url.$this->scheidingsteken.'pagina=1">Eerste</a> - ';
for($l = $start_links; $l < $this->huidige_pagina; $l++) {
if($l != 1) {
$nummering .= '<a href="'.$this->url.$this->scheidingsteken.'pagina='.$l.'">'.$l.'</a> - ';
}
}
}
$nummering .= $this->huidige_pagina;
//de rechterkant
$start_rechts = $this->huidige_pagina + 1;
$einde_rechts = $start_rechts + $this->aantal_paginanummers;
for($r = $start_rechts; $r < $einde_rechts; $r++) {
if($r < $this->totaal_aantal_paginas) {
$nummering .= ' - <a href="'.$this->url.$this->scheidingsteken.'pagina='.$r.'">'.$r.'</a>';
}
if($r == $this->totaal_aantal_paginas) {
$nummering .= ' - <a href="'.$this->url.$this->scheidingsteken.'pagina='.$r.'">Laatste</a>';
}
}
if(($einde_rechts-1) < $this->totaal_aantal_paginas) {
$nummering .= ' - <a href="'.$this->url.$this->scheidingsteken.'pagina='.$this->totaal_aantal_paginas.'">Laatste</a>';
}
return $nummering;
}
}
?>