par
Ultiny » 10 juil. 2006, 08:46
Sans lire ton code (mal organisé au passage...

), 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> \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\"> ".$cpt." </span>\n";
}
else
{
echo " <a href=\"".$PHP_SELF."?page=".(($cpt-1)*$nbr_page)."\" style=\"".$style."\">".$cpt."</a> \n";
}
}
}
// On affiche le lien pour la page suivante
if ($page + $nbr_page < $max)
{
echo " <a href=\"".$PHP_SELF."?page=".($page+$nbr_page)."\" style=\"".$style."\">>></a>\n";
}
?>
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 [color=darkblue]for[/color] dans ce cas de figure mais des [color=darkblue]foreach[/color].
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]<?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> \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\"> ".$cpt." </span>\n";
}
else
{
echo " <a href=\"".$PHP_SELF."?page=".(($cpt-1)*$nbr_page)."\" style=\"".$style."\">".$cpt."</a> \n";
}
}
}
// On affiche le lien pour la page suivante
if ($page + $nbr_page < $max)
{
echo " <a href=\"".$PHP_SELF."?page=".($page+$nbr_page)."\" style=\"".$style."\">>></a>\n";
}
?>[/php]