affichage page par page

Eléphant du PHP | 76 Messages

07 juil. 2006, 11:51

Bonjour,
cest encore moi lol

jai un pb avec les affichages il me met bien mes photos page par page auf qu'a la fin il me met des offset en plus voici le code :
<?php 

// Configuration
$nbr_page = 5; // Nombre d'affichage par page
$nmr_page = 10; // Nombre de Numéro par page
$style = 'font-size: 10px; color: black'; 

// Configuration 
$folder = "."; //--->>> C'EST ICI QUE L'ON MODIFIE LE NOM DU DOSSIER OU L'ON PLACE LES IMAGES <<<---///
$dossier = opendir($folder);
while ($Fichier = readdir($dossier)) {
if ($Fichier != "." && $Fichier != "..") {
if(is_file($folder."/".$Fichier) ) {
 // si c'est une extension d'image
            $ext = strtolower(substr($Fichier, strrpos($Fichier, '.') + 1));
            if(   ($ext=="jpg") || ($ext=="jpeg")
               || ($ext=="gif")
               || ($ext=="bmp")
               || ($ext=="png")) {

   // On stocke les résultats dans un array()
   $manuel[] = $Fichier;
  
  $compteur++;
   }
    
}
}}
// Fermeture du dossier
closedir($dossier);

if (empty($_GET['page']))
 $cpt = 0;
else $cpt = $_GET['page'];
$max_page = $cpt+ $nbr_page ;
$page = $_GET['page'];

// On défini le nombre max
$max = $compteur-1;

// On affiche le contenu de la page demandée
while ($cpt < $max_page){

    $fonction = $manuel[ $cpt ];


    echo "<img src='".$fonction."' width=130 border=none><br />\n";

    $cpt++;

}

// On affiche le lien pour la page précedente
if ($page >= $nbr_page){
    echo "<a href=\"".$PHP_SELF."?page=".($page-$nbr_page)."\" style=\"".$style."\"><<</a>&nbsp;\n";
}

// On calcule le numéro des pages
if (!isset($page)) $page = 0;

    if ($page >= ($nmr_page * $nbr_page)){
        $cpt_fin = ($nmr_page / $nbr_page) + 1;
        $cpt_deb = $cpt_fin - $nmr_page + 1;
    }else{
        $cpt_deb = 1;
        $cpt_fin = (int)($max / $nbr_page);

        if (($max % $nbr_page) != 0) $cpt_fin++;
        if ($cpt_fin > $nmr_page) $cpt_fin = $nmr_page;
    }

    for ($cpt = $cpt_deb; $cpt <= $cpt_fin; $cpt++){
        if ($cpt == ($page / $nbr_page) + 1){
            echo "<span style=\"".$style."; font-weight: bold\">&nbsp;".$cpt."&nbsp;</span>\n";
        }else{
            echo "&nbsp;<a href=\"".$PHP_SELF."?page=".(($cpt-1)*$nbr_page)."\" style=\"".$style."\">".$cpt."</a>&nbsp;\n";
        }
    }

// On affiche le lien pour la page suivante
if ($page + $nbr_page < $max){
    echo "&nbsp;<a href=\"".$PHP_SELF."?page=".($page+$nbr_page)."\" style=\"".$style."\">>></a>\n";
}
?>
Merci de votre aide

ViPHP
ViPHP | 656 Messages

10 juil. 2006, 08:46

Sans lire ton code (mal organisé au passage... :lol: ), tu dois tenter d'afficher le nom des images dans une boucle, sauf que sur ta dernière pas de photos qui n'est pas complète, des notices s'affiches.

C'est evident si tu souhaite afficher par exemple 9 images par page et qu'à la dernière il n'y en a que 5.

C'est pourquoi il ne faut pas utiliser des boucles for dans ce cas de figure mais des foreach.

Exemple, tu mets dans un tableau $img les noms des images. Ensuite tu le lit avec foreach, il ne sera lu que le nombre d'images qui existe.

Voici le code réorganisé pour ceux qui souhaiteraient t'aider.
<?php

// Configuration
$nbr_page = 5;
// Nombre d'affichage par page

$nmr_page = 10;
// Nombre de Numéro par page

$style = 'font-size: 10px; color: black';

$folder = ".";
//--->>> C'EST ICI QUE L'ON MODIFIE LE NOM DU DOSSIER OU L'ON PLACE LES IMAGES <<<---///


$dossier = opendir($folder);

while ($Fichier = readdir($dossier))
{
    if ($Fichier != "." && $Fichier != "..")
    {
        if (is_file($folder."/".$Fichier))
        {
            // si c'est une extension d'image
            $ext = strtolower(substr($Fichier, strrpos($Fichier, '.') + 1));
            
            if($ext=="jpg"||$ext=="jpeg"||$ext=="gif"||$ext=="bmp"||$ext=="png")
            {
                // On stocke les résultats dans un array()
                $manuel[] = $Fichier;
                $compteur++;
            }
        }
    }
}

// Fermeture du dossier
closedir($dossier);

if (empty($_GET['page']))
{
    $cpt = 0;
}
else
{
    $cpt = $_GET['page'];
}

$max_page = $cpt+$nbr_page;
$page = $_GET['page'];

// On défini le nombre max
$max = $compteur-1;

// On affiche le contenu de la page demandée
while ($cpt < $max_page)
{
    $fonction = $manuel[$cpt];
    echo "<img src='".$fonction."' width=130 border=none><br />\n";
    $cpt++;
}

// On affiche le lien pour la page précedente
if ($page >= $nbr_page)
{
    echo "<a href=\"".$PHP_SELF."?page=".($page-$nbr_page)."\" style=\"".$style."\"><<</a>&nbsp;\n";
}

// On calcule le numéro des pages
if (!isset($page))
{
    $page = 0;
}

if ($page >= ($nmr_page * $nbr_page)
{
    $cpt_fin = $nmr_page / $nbr_page + 1;
    $cpt_deb = $cpt_fin - $nmr_page + 1;
}
else
{
    $cpt_deb = 1;
    $cpt_fin = (int)($max / $nbr_page);
    
    if (($max % $nbr_page) != 0)
    {
        $cpt_fin++;
    }
    
    if ($cpt_fin > $nmr_page)
    {
        $cpt_fin = $nmr_page;
    }
    
    for ($cpt = $cpt_deb; $cpt <= $cpt_fin; $cpt++)
    {
        if ($cpt == ($page / $nbr_page) + 1)
        {
            echo "<span style=\"".$style."; font-weight: bold\">&nbsp;".$cpt."&nbsp;</span>\n";
        }
        else
        {
            echo "&nbsp;<a href=\"".$PHP_SELF."?page=".(($cpt-1)*$nbr_page)."\" style=\"".$style."\">".$cpt."</a>&nbsp;\n";
        }
    }
}
    
// On affiche le lien pour la page suivante
if ($page + $nbr_page < $max)
{
    echo "&nbsp;<a href=\"".$PHP_SELF."?page=".($page+$nbr_page)."\" style=\"".$style."\">>></a>\n";
}

?>