[PHP] boucle while et opendir

Résolu
juloo6578 Messages postés 52 Date d'inscription   Statut Membre Dernière intervention   -  
the_animal Messages postés 69 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je souhaite ajouter un bouton 'page suivante' pour éviter que les pages soient trop lourdes.

J'affiche le résultat de la fonction opendir et readdir grâce à la boucle while :

$dossier=opendir("dossier/");
while ($fichier = readdir($dossier)) {
        if($fichier != '.' && $fichier != '..' && $fichier != 'index.php') {
                echo '<img src="dossier/'.$fichier.'" title="image" />';
        }
}



J'aimerais ajouter le bouton page suivante pour n'afficher que 20 images à la fois.


Merci.


8 réponses

tryan44 Messages postés 1288 Date d'inscription   Statut Membre Dernière intervention   220
 
Bonsoir,

ça s'appel une pagination et c'est plutôt complexe à réaliser et encore plus à poster...

Voci un lien qui je l'espère ne sera pas supprimé et qui correspond à votre attente http://forum.creer-un-site.fr/creer-un-site-587-probleme-pagination-galerie#p4713

Dans le code, il faut supprimer la première variable
$adresse_normal = "galerie-images/normal/";

puis ensuite remplacer $adresse-normal par $adresse_miniature dans la suite du code.
0
the_animal Messages postés 69 Date d'inscription   Statut Membre Dernière intervention   18
 
Bonjour,

voici un petit code que j'ai modifié depuis votre code, peut être la solution à votre problème:


<?php
$dossier=opendir("dossier/");
$file_list= scandir("dossier/");
//définition du nombre d'images à afficher par page
$nb_affichage=20;
//filtrer les fichiers à afficher
$file_list=array_filter($file_list, function ($element) { return ($element != '.' && $element!='..' && $element!='index.php'); } ); 
//page suivante appelé par la methode GET ex: ?page=1
$page =(isset($_GET['page'])) ? $_GET['page'] : 0;
$file_list=array_chunk($file_list,$nb_affichage);
var_dump($file_list);
for($i = 0; $i<$nb_affichage;$i++) {
	if(isset($file_list[$page][$i]))
                echo '<img width="100" height="100" src="dossier/'.$file_list[$page][$i].'" title="image" />';
}
?>


pour appeler la page suivante, on ajoute un paramètre get , page=1 ou 2 ou ...

Bonne continuation.
0
juloo6578 Messages postés 52 Date d'inscription   Statut Membre Dernière intervention   12
 
Merci beaucoup pour votre soutient !!

Je n'ais pas très bien compris cette ligne :

$file_list = array_filter($file_list, function ($element) {
return ($element != '.' && $element!='..' && $element!='index.php');
});

Apparemment vous créez une fonction ?

En tout cas elle engendre une erreur...
0
the_animal Messages postés 69 Date d'inscription   Statut Membre Dernière intervention   18
 
array_filter sert à filtrer l'array précedemment créé, j'ai enlevé dans cet array les repertoires "." et ".." ainsi que l'index.php.
mets cela en une seule ligne.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
juloo6578 Messages postés 52 Date d'inscription   Statut Membre Dernière intervention   12
 
cette ligne crée une erreur
0
the_animal Messages postés 69 Date d'inscription   Statut Membre Dernière intervention   18
 
C'est quoi l'erreur? tu peux la copier?
0
juloo6578 Messages postés 52 Date d'inscription   Statut Membre Dernière intervention   12
 
Parse error: syntax error, unexpected T_FUNCTION in /data/filer-6/web/web507/htdocs/upload/gallerie.php on line 11
0
the_animal Messages postés 69 Date d'inscription   Statut Membre Dernière intervention   18
 
Apparemment ton version de php ne permet pas d'utiliser ce code, utilises ceci:


<?php
$dossier=opendir("dossier/");
$file_list= scandir("dossier/");
//définition du nombre d'images à afficher par page
$nb_affichage=5;
//filtrer les fichiers à afficher
function callback($element) { return ($element != '.' && $element!='..' && $element!='index.php'); }
$file_list=array_filter($file_list, "callback");
//page suivante appelé par la methode GET ex: ?page=1
$page =(isset($_GET['page'])) ? $_GET['page'] : 0;
$file_list=array_chunk($file_list,$nb_affichage);
for($i = 0; $i<$nb_affichage;$i++) {
	if(isset($file_list[$page][$i]))
                echo '<img width="100" height="100" src="dossier/'.$file_list[$page][$i].'" title="image" />';
}
?>

0