aide sur script galerie php

  • Auteur de la discussion Auteur de la discussion ylev
  • Date de début Date de début
Bonjour,
j'ai trouvé un script php qui permet de faire une galerie, malheureusement l'ordre d'affichage des images semble ne suivre aucune logique.
Si quelqu'un pouvait m'aider afin d'afficher les images dans un ordre croissant ce serait sympa.
Merci d'avance.
le script:
Code:
<?php
		
		/* settings */
		$image_dir = 'images/';
		$per_column = 6;
		
		
		/* step one:  read directory, make array of files */
		if ($handle = opendir($image_dir)) {
			while (false !== ($file = readdir($handle))) 
			{
				if ($file != '.' && $file != '..') 
				{
					if(strstr($file,'-thumb'))
					{
						$files[] = $file;
					}
				}
			}
			closedir($handle);
		}
		
		/* step two: loop through, format gallery */
		if(count($files))
		{
			foreach($files as $file)
			{
				$count++;
				echo '<a class="photo-link" rel="one-big-group" href="',$image_dir,str_replace('-thumb','',$file),'"><img src="',$image_dir,$file,'" width="100" height="100" /></a>';
				if($count % $per_column == 0) { echo '<div class="clear"></div>'; }
			}
		}
		else
		{
			echo '<p>Aucune image disponible.</p>';
		}
		
	?>
 
A ta place je remplacerais :

Code:
      /* step one:  read directory, make array of files */
      if ($handle = opendir($image_dir)) {
         while (false !== ($file = readdir($handle)))
         {
            if ($file != '.' && $file != '..')
            {
               if(strstr($file,'-thumb'))
               {
                  $files[] = $file;
               }
            }
         }
         closedir($handle);
      }

par

Code:
$files = glob( $image_dir."*.*");

glob ayant l'avantage de renvoyer la liste des fichiers triés en fonction de leur nom. A la différence de readdir : http://www.php.net/manual/fr/function.readdir.php. Et au final je trouve ça bien plus efficace et sexy.
 
Merci
Je précise être une cruche.
En remplaçant par ton code cela ne fonctionne pas malheureusement.
 
Code:
  /* step one:  read directory, make array of files */
      if ($handle = opendir($image_dir)) {
         while (false !== ($file = readdir($handle))) 
         {
            if ($file != '.' && $file != '..') 
            {
               if(strstr($file,'-thumb'))// filtre les fichiers contenant thumb dans leur nom
               {
                  $files[] = $file;
               }
            }
         }
Si tu mets
Code:
  /* step one:  read directory, make array of files */
      if ($handle = opendir($image_dir)) {
         while (false !== ($file = readdir($handle))) 
         {
            if ($file != '.' && $file != '..') 
            {
                  $files[] = $file;
            }
         }
Et que tu nommes tes fichiers pour qu'ils apparaissent dans l'ordre souhaité sur le ftp.
Alors tu auras l'ordre voulu dans ta page web.
 
Merci B-vibes
mais dans ta solution, tu n'affiches plus les thumbs mais directement les images grandes tailles forcées a 100*100.
J'aurais bien aimé affiché les thumbs dans un ordre croissant.
 
Code:
<?php
      
      /* settings */
      $image_dir = 'images/';
      $per_column = 6;
      $files = glob($image_dir."*.*");
      
      /* step two: loop through, format gallery */
      if(count($files))
      {
         foreach($files as $file)
         {
            $count++;
            echo '<a class="photo-link" rel="one-big-group" href="',$image_dir,str_replace('-thumb','',$file),'"><img src="',$image_dir,$file,'" width="100" height="100" /></a>';
            if($count % $per_column == 0) { echo '<div class="clear"></div>'; }
         }
      }
      else
      {
         echo '<p>Aucune image disponible.</p>';
      }
      
   ?>

Je viens de tester en local et ca marche nickel. Tu es sûr de bien avoir modifié comme il faut ? Ton script est au même niveau que le dossier qui contient les images ?
 
ylev a dit:
Merci B-vibes
mais dans ta solution, tu n'affiches plus les thumbs mais directement les images grandes tailles forcées a 100*100.
J'aurais bien aimé affiché les thumbs dans un ordre croissant.
Dans ce cas tu ne changes rien au code, mais tu appliques un nommage rigoureux pour avoir la liste de tes thumbs dans le bon ordre. Ça t'évite de coder quoi.
 
Je viens de tester en local et ca marche nickel. Tu es sûr de bien avoir modifié comme il faut ? Ton script est au même niveau que le dossier qui contient les images ?

Oui mon dossier est au meme niveau que le script.
le chemin de ton script donne images/images/xx.jpg
au lieu de images/xx.jpg
 
B-vibes a dit:
ylev a dit:
Merci B-vibes
mais dans ta solution, tu n'affiches plus les thumbs mais directement les images grandes tailles forcées a 100*100.
J'aurais bien aimé affiché les thumbs dans un ordre croissant.
Dans ce cas tu ne changes rien au code, mais tu appliques un nommage rigoureux pour avoir la liste de tes thumbs dans le bon ordre. Ça t'évite de coder quoi.
Merci,
mais la ça implique de renommer les photos + les thumbs une a une :-(
Car des qu'il y a lettres ou tirets ça ré-affiche sans logique
 
ylev a dit:
Si quelqu'un pouvait m'aider afin d'afficher les images dans un ordre croissant ce serait sympa.
Ah, j'ai dû rater une étape alors. Comment le script devine l'ordre souhaité si on ne s'appuie sur aucun critère ?
Je vais faire ma soupe, et je réflechis. :mrgreen:
 
B-vibes a dit:
ylev a dit:
Si quelqu'un pouvait m'aider afin d'afficher les images dans un ordre croissant ce serait sympa.
Ah, j'ai dû rater une étape alors. Comment le script devine l'ordre souhaité si on ne s'appuie sur aucun critère ?
Je vais faire ma soupe, et je réflechis. :mrgreen:
J'en sais rien mais ce que je sais c'est que ce n'est pas aléatoire puisque c'est toujours dans le même ordre. Sans que je n'en comprenne la logique.
bon app'
 
J'avais pas vu que tu utilisais ta variable lors de l'affichage.

Donc remplace :

Code:
echo '<a class="photo-link" rel="one-big-group" href="'.$image_dir.str_replace('-thumb','',$file).'"><img src="'.$image_dir.$file.'" width="100" height="100" /></a>';

par

Code:
echo '<a class="photo-link" rel="one-big-group" href="'.str_replace('-thumb','',$file).'"><img src="'.$image_dir.$file.'" width="100" height="100" /></a>';
 
UsagiYojimbo a dit:
J'avais pas vu que tu utilisais ta variable lors de l'affichage.

Donc remplace :
Merci pour ton aide,
la cela fonctionne pour l'ordre mais tu affiches les thumbs et les images dans la galerie alors qu'il ne faudrait que les thumbs les images s'affichant au click
 
UsagiYojimbo a dit:
Il te faut juste dans ce cas reprendre ton test initial sur le -thumb et l'inclure dans le foreach où tu affiches tes liens.
Possibilité de l'écrire?
je sais j'en demande beaucoup désolé..
Merci
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut