Hoi allen,

Ik heb vandaag heel veel lopen stoeien en uitgeprobeert om te zorgen dat mijn plaatjes niet in een lange rij komt te staan.

Ik wil heb graag per 2 per pagina.... Dus op de eertste pagina de eerste 2 plaatjes en dan de volgende 2 plaatjes op pagina 2 ( deze moet automatisch aangemaakt worden ) enz enz.

Nu krijg ik wel in de urlbalk "index.php?p=1 ,index.php?p=2" enz ... alleen blijven wel alle plaatjes tegelijk zichtbaar op alle pagina's

Voor een duidelijke illustratie post ik de code:

index.php


<?php 


require("navigatie.class.php");
$ng = new Navigatie("portfolio", 1);


$sql = "SELECT * FROM portfolio 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))
{

}

mysql_free_result($res);


echo $ng->links();



$query = "SELECT * FROM portfolio ORDER BY id DESC LIMIT 0,5";
$result = mysql_query($query) or die(mysql_error());
$count = mysql_num_rows($result);
if ($count==0)
{
    echo '<span style="color: #FF0000;">Er staan geen projecten in de database</span>';
}
else
{
    while($row = mysql_fetch_assoc($result))
    {                
                echo '<span style="color: #c7bfb0;"><h3><strong>Projectnaam:</strong> '. $row['projectnaam'] .'</h3></span>
                <a href="'. $row['grote_afbeelding'] .'"><img src="'. $row['kleine_afbeelding'] .'" border="1" /></a><br /><br />
            <strong><span style="color: #7a7365;">Gebruikte Technieken:</strong> '. $row['technieken'] .'<br /><br /><strong>Beschrijving:</strong><br /> '. $row['beschrijving'] .'</span><br /><hr><br />';
    }
}

?>


navigatie.class.php


<?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;
    }
}
?>



ik hoop dat iemand een oplossing weet!

Alvast vriendelijk bedankt!

Jos
if(isset($_GET['p']) && is_numeric($_GET['p']) && $_GET['p'] > 0 && $_GET['p'] < $this->aantal_paginas)
{
$huidige_pagina = $_GET['p'];
}

weet je zeker dat dat werkt?
Misschien moet je bovenin je classe dit nog toevoegen:

<?php
global $_GET;
?>

Het lijkt er nl. op dat de $_GET['p'] niet wordt opgevangen.
hoe bedoel je dat ? .. ik ben heel nieuw met php taal
<?php
class Navigatie
{
//////////////////////////////////////////////////
// De tabel waaruit de waardes straks worden getoond
//////////////////////////////////////////////////
private $tabel;
?>

Maak van dat stukje:

<?php
class Navigatie
{
global $_GET;
//////////////////////////////////////////////////
// De tabel waaruit de waardes straks worden getoond
//////////////////////////////////////////////////
private $tabel;
?>

En probeer het dan nog eens uit.

Reageren