[PHP] boucle while et opendir

Résolu/Fermé
juloo6578 Messages postés 52 Date d'inscription vendredi 27 avril 2012 Statut Membre Dernière intervention 28 janvier 2013 - 30 avril 2012 à 21:28
the_animal Messages postés 69 Date d'inscription vendredi 27 avril 2012 Statut Membre Dernière intervention 27 juillet 2013 - 1 mai 2012 à 16:53
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.


A voir également:

8 réponses

tryan44 Messages postés 1288 Date d'inscription mardi 24 janvier 2012 Statut Membre Dernière intervention 26 octobre 2014 219
30 avril 2012 à 21:44
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 vendredi 27 avril 2012 Statut Membre Dernière intervention 27 juillet 2013 18
1 mai 2012 à 13:16
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 vendredi 27 avril 2012 Statut Membre Dernière intervention 28 janvier 2013 12
Modifié par juloo6578 le 1/05/2012 à 13:48
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 vendredi 27 avril 2012 Statut Membre Dernière intervention 27 juillet 2013 18
1 mai 2012 à 14:07
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 vendredi 27 avril 2012 Statut Membre Dernière intervention 28 janvier 2013 12
1 mai 2012 à 14:09
cette ligne crée une erreur
0
the_animal Messages postés 69 Date d'inscription vendredi 27 avril 2012 Statut Membre Dernière intervention 27 juillet 2013 18
1 mai 2012 à 14:10
C'est quoi l'erreur? tu peux la copier?
0
juloo6578 Messages postés 52 Date d'inscription vendredi 27 avril 2012 Statut Membre Dernière intervention 28 janvier 2013 12
1 mai 2012 à 15:13
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 vendredi 27 avril 2012 Statut Membre Dernière intervention 27 juillet 2013 18
1 mai 2012 à 16:53
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