[PHP] boucle while et opendir

Résolu
juloo6578 Messages postés 57 Statut Membre -  
the_animal Messages postés 74 Statut Membre -
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

  1. tryan44 Messages postés 1289 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
  2. the_animal Messages postés 74 Statut Membre 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
  3. juloo6578 Messages postés 57 Statut Membre 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
  4. the_animal Messages postés 74 Statut Membre 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. juloo6578 Messages postés 57 Statut Membre 12
     
    cette ligne crée une erreur
    0
  7. the_animal Messages postés 74 Statut Membre 18
     
    C'est quoi l'erreur? tu peux la copier?
    0
  8. juloo6578 Messages postés 57 Statut Membre 12
     
    Parse error: syntax error, unexpected T_FUNCTION in /data/filer-6/web/web507/htdocs/upload/gallerie.php on line 11
    0
  9. the_animal Messages postés 74 Statut Membre 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