Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
722 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Pagination de ma galerie sans base de données

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Pagination de ma galerie sans base de données

n°1493101
Heartless
Posté le 19-12-2006 à 09:08:23  profilanswer
 

Bonjour,
 
j'utilise actuellement un script permettant d'afficher une galerie d'images à partir des fichiers contenus dans un dossier.
 
Le script donne aussi le nombre de fichiers contenus dans le dossier et donc dans la galerie via cette fonction : count_files($folder, $ext, $subfolders)
 
J'aimerais mettre en place un système de pagination (par exemple 20 images par page) qui se fasse automatiquement... Le problème est que je ne sais pas comment faire, tous les scripts que j'ai pu trouver sur le net ne faisaient pas ce que je voulais et le seul que jai trouvé et qui me semblait parfait (il affiche le nombre de pages en fonction du nombre de lignes dans un tableau) n'avait pas de lien pour le télécharger... :(
J'ai réellement besoin d 'une pagination car le chargement d'une galerie est trop long quand les images sont nombreuses et je ne souhaite pas passer par la base de données...
 
J'ai donc décidé de venir vous demander, au cas où quelqu'un pourrait m'aider, et j'espère que ce sera le cas. ^^'
 
Merci d'avance.

mood
Publicité
Posté le 19-12-2006 à 09:08:23  profilanswer
 

n°1493527
rufo
Pas me confondre avec Lycos!
Posté le 19-12-2006 à 15:33:44  profilanswer
 

ben un petit fichier de paramétrage (pour fixer entre autre le nb de photos par page) et ensuite dans ton script php, tu fais un while() sur le répertoire à afficher + un compteur qui s'incrémente à chaque fois que tu affiche une photo. Dès que t'as atteint le nombre max fixé, tu arrêtes le while().
Par ailleurs, il faut savoir à quelle photo tu commences (offset). Pour ça, tu utilises une variable genre "page" que tu mets dans l'url pour faire défiler les pages (comme dans google par ex) :
ex : http://www.monsite.fr/galerie.php?page=1
 
Pour connaître l'offset, tu fais page*(max photos par page). Après dans ton while(), tu n'affiche pas la photo tant que t'a pas atteint l'offset. Une fois atteint, tu affiches les photos jusqu'à ce que le compteur atteigne le nb max de photos par page.

n°1493540
rufo
Pas me confondre avec Lycos!
Posté le 19-12-2006 à 15:38:10  profilanswer
 

tien sinon, y'a ça de tout fait : http://www.mywebmymail.com/
 
EasyPHPAlbum, je m'en sers quand je veux rapidement partager des photos. Y'a qu'1 seul fichier, très simple et très rapide à mettre en oeuvre ;)

n°1493545
Heartless
Posté le 19-12-2006 à 15:42:15  profilanswer
 

wow... o_o je saurais pas faire tout ça moi... while c'est pas uniquement pour els bases de données ? <_<
 
désolé moi j'ai juste repris un script trouvé sur le net et modifié des trucs mais pour ajouter des fonctions comme ça je suis dans le brouillard... =/
 
pour le script de galerie que tu me montres là c'set trop d'options pour ce que je veux faire ! je ne veux pas de catégorie, je veux afficher le contenu d'un seul répertoire donc pas besoin de tout ça. le must serait juste une pagination en fonction du nombre de lignes dans mon tableau ! ^^
 
je peux te montrer mon script si tu veux <_<

Message cité 1 fois
Message édité par Heartless le 19-12-2006 à 15:43:30
n°1493553
MagicBuzz
Posté le 19-12-2006 à 15:46:46  profilanswer
 

rufo a écrit :

ben un petit fichier de paramétrage (pour fixer entre autre le nb de photos par page) et ensuite dans ton script php, tu fais un while() sur le répertoire à afficher + un compteur qui s'incrémente à chaque fois que tu affiche une photo. Dès que t'as atteint le nombre max fixé, tu arrêtes le while().
Par ailleurs, il faut savoir à quelle photo tu commences (offset). Pour ça, tu utilises une variable genre "page" que tu mets dans l'url pour faire défiler les pages (comme dans google par ex) :
ex : http://www.monsite.fr/galerie.php?page=1
 
Pour connaître l'offset, tu fais page*(max photos par page). Après dans ton while(), tu n'affiche pas la photo tant que t'a pas atteint l'offset. Une fois atteint, tu affiches les photos jusqu'à ce que le compteur atteigne le nb max de photos par page.


tout pareil :)
http://photos.manga-torii.com/gale [...] d=4&page=2
 
(là j'ai juste un fichier xml en plus, histoire de savoir dans quel répertoire chercher quelle galerie)
 
mais c'est pas du php [:magicbuzz]


Message édité par MagicBuzz le 19-12-2006 à 15:46:59
n°1493572
Heartless
Posté le 19-12-2006 à 15:57:28  profilanswer
 

bon je sais pas trop comment expliquer mais le répertoire dans lequel on affiche les images est sélectionné via $_GET['truc'] <_< voilà mon script complet :

Code :
  1. <?php
  2. $titrerub = str_replace("_","&nbsp;",$_GET['rub']);
  3. $titrepage = str_replace("_","&nbsp;",$_GET['page']);
  4. echo '<span class="grand_titre b">'.$titrerub.'</span>'.$hr;
  5. // --------------------- variables du nombre de fichiers
  6. $folder = 'img/'.$_GET['rub'].'/'.$_GET['page'].'/'; // adresse du dossier à lister.
  7. $ext = 'jpg'; // extention des images à compter.
  8. $subfolders = '0'; // 1 = compter ceux des sous-dossiers / 0 = compter uniquement dans ce dossier.
  9. $nb_files = 'Cette galerie contient <b>'.count_files($folder, $ext, $subfolders).'</b> '.$titrepage.'. (Classés du plus récent au plus ancien)';
  10. // Lire la taille des images
  11.    function imgt($imgs){
  12. $imgt = getimagesize($imgs);
  13. echo $imgt[0]." x ".$imgt[1];
  14. }
  15. // ------------------------------------------------------------------------- //
  16. // Album photos à partir des images miniatures                               //
  17. // ------------------------------------------------------------------------- //
  18. // Information sur le fonctionnement de ce prog //
  19. //
  20. // 1) Mettre les photos 'grand-format' dans un  
  21. //    Répertoire (par Exemple : Photos) de votre site Web
  22. //    Les photos sont visibles à l'adresse suivante:
  23. //    http://www.monsite.fr/Photos/
  24. //
  25. // 2) Créer un répertoire 'mini' dans 'Photos'
  26. //    accés aux mini-photos à partir de :
  27. //    http://www.monsite.fr/Photos/mini/
  28. //
  29. // 4) Générer les mini-photos à partir des photos
  30. //    grand-format et les placer dans le répertoire
  31. //    'mini' (http://www.monsite.fr/Photos/mini/)
  32. // Configuration et Définition des variables
  33. // Titre de votre Album
  34.   $titreAlbum = "---";
  35.   $soustitreAlbum = "---";
  36.  
  37. // nom du répertoire où se trouve les mini images (répertoire "mini" par défaut)
  38.   $mini = "img/".$_GET['rub']."/".$_GET['page']."/miniatures/"; // (n'oubliez pas le '/' à la fin... :o)
  39. // Nombre de Photos par ligne (5 par défaut)
  40.   $nbPhotosParLigne = 3;
  41. // Largeur d'une diapo (100 par défaut)
  42.   $largeurDiapo = 150;
  43. // Extention des photos ('.jpg' par défaut ou '.gif')
  44.   $extPhotos=".jpg";
  45. */
  46. // ------------------------------------------------------------------------- //
  47. // Début du Programme
  48.   $repertoire = opendir($mini);
  49.   while ($entree = readdir($repertoire))
  50.   {
  51.     if ($entree != "." && $entree != ".." )
  52.       // Attention: Les mini-photos sont détectées qu'avec les
  53.       // extensions ".jpg" et ".gif"
  54.       if (($ExtImg = strtolower(substr($entree, -4))==".jpg" ) ||
  55.           ($ExtImg = strtolower(substr($entree, -4))==".gif" ))
  56.       {
  57.         // Methode pour trier par date
  58.         $tFichiers[] = filemtime($mini.$entree)."+".$entree;
  59.         // NbImages = sizeof($tFichiers);
  60.       }
  61.   }
  62.   closedir($repertoire);
  63.   // ------------------------------------------------------------------------------------ le tri décroissant des dates ! Supprimer le "r" pour trier dans l'ordre croissant.
  64.   rsort($tFichiers);
  65.   // Creation des tableaux synchro 'NomImage' et 'DateImage'
  66.   for ($cpt = 0; $cpt < sizeof($tFichiers); $cpt++)
  67.   {
  68.     // Découpage
  69.     $tVals = explode("+", $tFichiers[$cpt]);
  70.     // génère 2 tableaux synchronisés
  71.     $tImages[] = $tVals[1];
  72.     $tDates[] = "[".date("d m Y",$tVals[0])."]<br />";
  73.   }
  74.   // generation de la partie HTML
  75. // --------------------------------------------------------------------------------------- fonction du nombre de fichiers
  76. function count_files($folder, $ext, $subfolders)
  77. {
  78.      // on rajoute le / à la fin du nom du dossier s'il ne l'est pas  
  79.      if(substr($folder, -1) != '/')
  80.         $folder .= '/';
  81.      
  82.      // $ext est un tableau?  
  83.      $array = 0;
  84.      if(is_array($ext))
  85.         $array = 1;
  86.      // ouverture du répertoire  
  87.      $rep = @opendir($folder);
  88.      if(!$rep)
  89.         return -1;
  90.        
  91.      $nb_files = 0;
  92.      // tant qu'il y a des fichiers  
  93.      while($file = readdir($rep))
  94.      {
  95.         // répertoires . et ..  
  96.         if($file == '.' || $file == '..')
  97.          continue;
  98.        
  99.         // si c'est un répertoire et qu'on peut le lister  
  100.         if(is_dir($folder . $file) && $subfolders)
  101.             // on appelle la fonction  
  102.          $nb_files += count_files($folder . $file, $ext, 1);
  103.         // vérification de l'extension avec $array = 0  
  104.         else if(!$array && substr($file, -strlen($ext))== $ext)
  105.          $nb_files++;
  106.         // vérification de l'extension avec $array = 1     
  107.         else if($array && in_array(substr($file, -strlen($ext)), $ext))
  108.          $nb_files++;
  109.      }
  110.      
  111.      // fermeture du rep  
  112.      closedir($rep);
  113.      return $nb_files;
  114. }
  115. // ------------------------------------------------------------------------ affichage du nombre de fichiers
  116. echo $nb_files . $hr.'<br />';
  117. // ------------------------------------------------------------------------ listage des images dans un tableau
  118.   // définition du tableau HTML
  119.   echo "<table width='100%' border='0'>";
  120.  
  121.   reset($tImages);
  122.   reset($tDates);
  123.   $ligne=0;
  124.   while (($ligne*$nbPhotosParLigne)<(sizeof($tImages)))
  125.   {
  126.     echo "<tr>";
  127.     for ($pos = 0; $pos < $nbPhotosParLigne; $pos++)
  128.     {
  129.       $ind=$ligne*$nbPhotosParLigne+$pos;
  130.       if ($tImages[$ind]!="" )
  131.       {
  132.           $NomImg=substr($tImages[$ind],0,strlen($tImages[$ind])-4);
  133.           echo "<td align='center' valign='bottom'>";
  134.           echo "<span class='images'><a target='_blank' href='img/img.php?img=./".$_GET['rub']."/".$_GET['page']."/".$NomImg."$extPhotos'><img alt='".$_GET['page']." Nom du site' title='".$_GET['page']." Nom du site' border='0' src='";
  135.           echo $mini.$tImages[$ind];
  136.           echo "'></a></span><br />";
  137.           echo "<b>";
  138. // Afficher la taille de l'image
  139. imgt("img/".$_GET['rub']."/".$_GET['page']."/".$NomImg.".jpg" );
  140.   
  141.    echo "</b><br />".$tDates[$ind]."<br /><br /></td>";
  142.       }
  143.       else
  144.       {
  145.           echo "<td valign='middle' align='center'></td>";
  146.       }
  147.     }
  148.     print "</tr>";
  149.     $ligne++;
  150.   }
  151.   echo "</table>";
  152.   // echo "[".date("Y-m-d H:i",$tVals[0])."] <B>".$tVals[1]."</B><BR>\n";
  153.   // $tVals[1] est le fichier image
  154. ?>

Voyez-vous un moyen simple de faire une pagination avec ça ? (sans passer par un autre album photo, quoi...)


Message édité par Heartless le 19-12-2006 à 15:59:18
n°1493580
rufo
Pas me confondre avec Lycos!
Posté le 19-12-2006 à 16:02:22  profilanswer
 

Heartless a écrit :

wow... o_o je saurais pas faire tout ça moi... while c'est pas uniquement pour els bases de données ? <_<
 
désolé moi j'ai juste repris un script trouvé sur le net et modifié des trucs mais pour ajouter des fonctions comme ça je suis dans le brouillard... =/
 
pour le script de galerie que tu me montres là c'set trop d'options pour ce que je veux faire ! je ne veux pas de catégorie, je veux afficher le contenu d'un seul répertoire donc pas besoin de tout ça. le must serait juste une pagination en fonction du nombre de lignes dans mon tableau ! ^^
 
je peux te montrer mon script si tu veux <_<


 
bon, déjà, le while, c'est pas du tout pour les BD, c'est une instruction de boucle qu'on trouve dans la plupart des langages de programmation (dont PHP). Donc, tout ce que je t'ai décrit, c'est à faire dans le code source de php.
 
Pour le script que je t'ai passé, y'a juste à le mettre direct dans le répertoire et c'est tout, ça fonctionne (à moins que depuis la version que j'utilise, le concepteur ait compliqué son script).

n°1493602
Heartless
Posté le 19-12-2006 à 16:35:04  profilanswer
 

bon j'ai testé le script et je m'y perd... y'a beaucoup trop de choses pour moi ! XD
 
mais si quelqu'un trouvait un moyen avec mon script juste au dessus, ça serait le top ! ^^

n°1493624
rufo
Pas me confondre avec Lycos!
Posté le 19-12-2006 à 17:00:52  profilanswer
 

normalement, y'a que les premières lignes qui sont intéressantes. et même,  en ne touchant à rien, ça doit fonctionner. Le reste, c'est pour personnaliser...

n°1493635
Heartless
Posté le 19-12-2006 à 17:07:14  profilanswer
 

ahhhhhh j'ai rien touché et t'as raison ça marche... mais <_< ile ts plus long que le mien à charger les miniatures o_o


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Pagination de ma galerie sans base de données

 

Sujets relatifs
[Fortran] Lecture de données ds un fichier (facile je pense)pagination et couleur page en cours
Création d'une base de donée[ASP.net] Envoyer les données du "CreateUserWizard" dans ma DB
Principe de base, expliqué nulle partregroupement de données avec une boucle
Acceder a une base de donnée sans passer par phpmyadminBase de données avec relations plusieurs-à-plusieurs
transfert de données a partir du c++ vers Excel 
Plus de sujets relatifs à : Pagination de ma galerie sans base de données


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR