Je roept hem als volgt aan (als voorbeeld gebruik ik even een gastenboek):


<?php

//////////////////////////////////////////////////
// Eerst maken roepen we de klasse aan. Je moet
// hier meegeven uit welke tabel je zometeen de 
// gegevens wil halen en hoeveel berichten je op
// een pagina wil, in dit geval uit de tabel
// gastenboek en 20 berichten per pagina
//////////////////////////////////////////////////
require("navigatie.class.php");
$ng = new Navigatie("gastenboek", 20);

/////////////////////////////////////////////////
// Nu halen we de gegevens op uit de database, 
// met de offset en limit die in de klasse 
// berekend worden
/////////////////////////////////////////////////
$sql = "SELECT * FROM gastenboek ORDER BY id DESC LIMIT ".$ng->offset().",".$ng->items_per_pagina()."";
$res = mysql_query($sql) or die (mysql_error());
while ($show = mysql_fetch_object($res))
{
    // Doe iets op de opgehaalde gegevens
}
/////////////////////////////////////////////////
// Even het resultaat vrijgeven
/////////////////////////////////////////////////
mysql_free_result($res);

/////////////////////////////////////////////////
// De links naar de volgende pagina's weergeven
/////////////////////////////////////////////////
echo $ng->links();

?>


[b]navigatie.class.php[/b] 

<?php
/**
 * @class: Deze klasse maakt een pagina systeem voor als je inhoud uit
 *         de database laat zien. Zo heb je niet alles onder elkaar 
 *         staan, maar houdt je alles overzichtelijk met meerdere 
 *         pagina's
 * @author: Gizmo (Dave Lemmens)
 * @version: v1.0
 * @copyright: (c)2007 Gizmo
 */
class Navigatie
{
    //////////////////////////////////////////////////
    // De tabel waaruit de waardes straks worden getoond
    //////////////////////////////////////////////////
    private $tabel;
    //////////////////////////////////////////////////
    // Het aantal items per pagina
    //////////////////////////////////////////////////
    private $items_per_pagina;
    //////////////////////////////////////////////////
    // Het aantal pagina's
    //////////////////////////////////////////////////
    private $aantal_paginas;
    //////////////////////////////////////////////////
    // De huidge pagina waarop de bezoeker is
    //////////////////////////////////////////////////
    private $huidig;
    //////////////////////////////////////////////////
    // De offset voor de uiteindelijke query
    //////////////////////////////////////////////////
    private $offset;
    
    /**
     * @function: Constructor: zet de variabelen goed
     * @param:    $tabel: de tabel waaruit de waardes straks worden weergegeven
     *            $items_per_pagina: het aantal items dat op een pagina getoond moet worden
     */
    public function Navigatie($tabel, $items_per_pagina)
    {
        $this->tabel = $tabel;
        $this->items_per_pagina = $items_per_pagina;
        $this->aantal_paginas = $this->count_paginas();
        $this->huidig = $this->get_huidig();
        $this->offset = $this->get_offset();
    }
    
    /**
     * @function: geeft de offset terug
     * @return: de offset
     */
    public function offset()
    {
        return $this->offset;
    }
    
    /**
     * @function: geeft het aantal items per pagina terug
     * @return: het aantal items per pagina
     */
    public function items_per_pagina()
    {
        return $this->items_per_pagina;
    }
    
    /**
     * @function: zet de nodige variabelen goed
     * @param:    $tabel: de tabel waaruit de waardes straks worden weergegeven
     *            $items_per_pagina: het aantal items dat op een pagina getoond moet worden
     * @return: void
     */
    public function set($tabel, $items_per_pagina)
    {
        //////////////////////////////////////////////////
        // Variabelen goed zetten
        //////////////////////////////////////////////////
        $this->tabel = $tabel;
        $this->items_per_pagina = $items_per_pagina;
        
        //////////////////////////////////////////////////
        // Aantal pagina's en de offset berekenen en de 
        // huidige pagina opzoeken
        //////////////////////////////////////////////////
        $this->aantal_paginas = $this->count_paginas();
        $this->huidig = $this->get_huidig();
        $this->offset = $this->get_offset();
    }
    
    /**
     * @function: berekent het totaal aantal paginas
     * @return: het totale aantal paginas
     */
    private function count_paginas()
    {
        $sql = "SELECT COUNT(id) FROM ".$this->tabel."";
        $res = mysql_query($sql) or die (mysql_error());
        $aantal_items = mysql_result($res, 0);
        mysql_free_result($res);
        $paginas = ceil($aantal_items / $this->items_per_pagina);
        return $paginas;
    }
    
    /**
     * @function: kijkt op welke pagina de bezoeker nu is.
     * @return: de pagina waarop de bezoeker nu is
     */
    private function get_huidig()
    {
        //////////////////////////////////////////////////
        // We beginnen op 0, voor als de bezoeker nog
        // niet op een volgende pagina is, of voor als
        // de $_GET geen geldige waarde bevat
        //////////////////////////////////////////////////
        $huidige_pagina = 0;
        
        //////////////////////////////////////////////////
        // Kijken op welke pagina de bezoeker is en 
        // meteen controleren of het een geldige waarde is
        //////////////////////////////////////////////////
        if(isset($_GET['p']) && is_numeric($_GET['p']) && $_GET['p'] > 0 && $_GET['p'] < $this->aantal_paginas)
        {
            $huidige_pagina = $_GET['p'];
        }
        
        return $huidige_pagina;
    }
    
    /**
     * @function: berekend de offset voor de uiteindelijke query
     * @return: de offset voor de uiteindelijke query
     */
    private function get_offset()
    {
        $offset = $this->huidig * $this->items_per_pagina;
        return $offset;
    }
    
    /**
     * @function: Deze functie maakt de navigatie links
     * @return: de navigatie links
     */
    public function links()
    {
        //////////////////////////////////////////////////
        // Eerst bepalen we de url. Hiervoor maken we 
        // gebruik van de functie querystring()
        //////////////////////////////////////////////////
        $q = $_SERVER['PHP_SELF'].$this->querystring("p");
        
        //////////////////////////////////////////////////
        // Nu maken we de vorige knop
        //////////////////////////////////////////////////
        if ($this->huidig > 0)
        {
            $out .= " <a href='".$q."p=".($this->huidig - 1)."'>Vorige</a> ";
        }
        
        //////////////////////////////////////////////////
        // We maken de navigatie met behulp van een 
        // select. Als er op een paginanummer geklikt 
        // wordt, wordt je meteen naar de pagina gestuurd
        //////////////////////////////////////////////////
        if ($this->aantal_paginas > 1)
        {
            $out .= "<select name='navigatie'>\n";
            for ($i = 0; $i < $this->aantal_paginas; $i++)
            {
                $out .= "<option value='".$i."' onClick='JavaScript:window.location=\"".$q."p=".$i."\"' ";
                //////////////////////////////////////////////////
                // De huidige pagina moet geselecteerd zijn
                ////////////////////////////////////////////////// 
                if ($this->huidig == $i) 
                { 
                    $out .= "selected='selected'"; 
                } 
                $out .= ">".($i+1)."</option>";
            }
            $out .= "</select>\n";
        }
        
        //////////////////////////////////////////////////
        // Nu maken we de volgende knop
        //////////////////////////////////////////////////
        if ($this->huidig < ($this->aantal_paginas - 1))
        {
            $out .= " <a href='".$q."p=".($this->huidig + 1)."'>Volgende</a>";
        }

        return $out;
    }
    
    /**
     * @function: maakt de url door te kijken welke $_GET waardes er 
     *            al in staan, zodat deze niet verloren gaan
     * @param:    $nav_var: de variabele die het paginanummer aangeeft
     * @return: de juiste querystring
     */
    private function querystring($nav_var)
    {
        //////////////////////////////////////////////////
        // We beginnen met een ? in de string
        //////////////////////////////////////////////////
        $qstring = "?";
        
        //////////////////////////////////////////////////
        // Nu kijken we of er meerdere queryvariabelen 
        //zijn
        //////////////////////////////////////////////////
        if(sizeof($_GET) > 1 || !in_array($nav_var, array_keys($_GET))) 
        {
            //////////////////////////////////////////////////
            // De string aanvullen met de variabelen die in
            // de url staan
            //////////////////////////////////////////////////
            foreach($_GET as $k => $v)
            {
                if($k != $nav_var) 
                {
                    $qstring .= $k."=".$v."&amp;";
                }
            }
        }

        return $qstring;
    }
}
?>
