[PHP] boucle while et opendir

Résolu
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. 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
    1. 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
      1. 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
        1. 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
          1. cette ligne crée une erreur
            0
            1. C'est quoi l'erreur? tu peux la copier?
              0
              1. Parse error: syntax error, unexpected T_FUNCTION in /data/filer-6/web/web507/htdocs/upload/gallerie.php on line 11
                0
                1. 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