[PHP] boucle while et opendir

[Résolu/Fermé]
Signaler
Messages postés
52
Date d'inscription
vendredi 27 avril 2012
Statut
Membre
Dernière intervention
28 janvier 2013
-
Messages postés
69
Date d'inscription
vendredi 27 avril 2012
Statut
Membre
Dernière intervention
27 juillet 2013
-
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

Messages postés
1288
Date d'inscription
mardi 24 janvier 2012
Statut
Membre
Dernière intervention
26 octobre 2014
231
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.
Messages postés
69
Date d'inscription
vendredi 27 avril 2012
Statut
Membre
Dernière intervention
27 juillet 2013
17
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.
Messages postés
52
Date d'inscription
vendredi 27 avril 2012
Statut
Membre
Dernière intervention
28 janvier 2013
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...
Messages postés
69
Date d'inscription
vendredi 27 avril 2012
Statut
Membre
Dernière intervention
27 juillet 2013
17
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.
Messages postés
52
Date d'inscription
vendredi 27 avril 2012
Statut
Membre
Dernière intervention
28 janvier 2013
12
cette ligne crée une erreur
Messages postés
69
Date d'inscription
vendredi 27 avril 2012
Statut
Membre
Dernière intervention
27 juillet 2013
17
C'est quoi l'erreur? tu peux la copier?
Messages postés
52
Date d'inscription
vendredi 27 avril 2012
Statut
Membre
Dernière intervention
28 janvier 2013
12
Parse error: syntax error, unexpected T_FUNCTION in /data/filer-6/web/web507/htdocs/upload/gallerie.php on line 11
Messages postés
69
Date d'inscription
vendredi 27 avril 2012
Statut
Membre
Dernière intervention
27 juillet 2013
17
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" />';
}
?>