Forum Clubic

Problème Pagination PHP

Bonjour à vous tous !

J’ai tenté de faire une pagination pour une galerie ( toute les 10 images )
J’ai un peu suivi un tuto, un peu fait par moi même, mais là je bloque complètement.

La pagination se fait correctement, toutes les 10 images il se crée un nouveau numéro de page mais les images
restent toujours sur la même.
J’ai donc bien la pagination mais toutes les images se mettent les unes sous les autres, indéfiniment.

( Par contre je suis vraiment un gros gros débutant, si vous pouviez m’expliquer ce qu’il manque et où le rajouter, c’est important
pour moi de bien comprendre ce que je fais )

En vous remerciant.


<div id="galerie"> 

<?php 

$dos = "web/images/mini"; 

$dir = opendir($dos); 

while($file = readdir($dir)){ 

$allow_ext = array("jpg",'png','gif'); 

$ext = strtolower(substr($file,-3)); 

if (in_array($ext,$allow_ext)){ 

?> 


<div id="divIGM"> 

<table id="tblThumbsLayout" cellpadding="10" cellspacing="5" align="center";> 

<tr> 
<td id='topCell' colspan='4'> 
</td> 
</tr> 

<tr> 
<td class='tdImg'> 
<a href= "web/images/<?php echo $file; ?>" rel='lightbox[id0]'> 
<img class='eImage' style="border:none" src="web/images/mini/<?php echo $file; ?>"></a> 
<p align=center><font class='tdTitle'><?php echo $file; ?></font></p> 
</td> 
</tr> 

</table> 

</div> 

<?php 

} 

} 

?> 

<?php 

$NombreImagesParPages = 10; // Nombre d'images par page 

// On compte le nombre d'images 

$files = glob("web/images/mini/*.*"); 

$TotalDesImages = count($files); 

// On calcule le nombre de pages à créer 
$NombreDePages = ceil($TotalDesImages / $NombreImagesParPages); 

// Puis on fait une boucle pour écrire les liens vers chacune des pages 
echo 'Page : '; 
for ($i = 1 ; $i <= $NombreDePages ; $i++) 

{ 

echo '<a href="realisations.php?page=' . $i . '">' . $i . '</a> '; 

} 

?> 

Pas étonnant, faire de la pagination sur un dossier ça ne se fait pas en général… d’autant qu’avec opendir tu n’es pas assuré de l’ordre de parcours.

Sinon, il faut que tu fasses le check des extensions sur les 4 derniers caractères car là, si le nom du fichier se termine par “jpg”, tu afficheras le fichier.

La bonne solution dans ton cas serait de mettre en cache (ou en session) dans un tableau la liste des fichiers images du dossier, puis t’en servir pour ta pagination. Genre :

$k = sha1($dirpath);
if (!isset($_SESSION['direntries'][$k])) {
  $entries = scandir($dirpath);
  function x($a) {return in_array(strtolower(substr($a, -4)), array('.jpg', '.gif', '.png'));}
  $entries = array_filter($entries, "x");
  $_SESSION['direntries'][$k] = $entries;
} else {
  $entries = $_SESSION['direntries'][$k];
}

$itemPerPage = 10;
$start = (isset($_GET['page']) ? 0:intval($_GET['page']))*$itemPerPage;
for ($i = $start, $j = 0; $j < $itemPerPage; ++$i, ++$j) {
  ?><img src="<?php echo $dirwwwpath, '/', $entries[$i]; ?>" /><?php
}

Cela ne fonctionnera peut être pas du premier coup, mais ça devrait ressembler à ce que tu auras au final.

Merci beaucoup pour votre réponse, mais il y a des tonnes de choses que je ne comprend pas.

A quel moment se trouve l’affichage des images, je ne vois pas l’endroit où j’indique le chemin de mes images.

Là : ?><?php