aide sur script galerie php

WRInaute discret
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>';
		}
		
	?>
 
WRInaute accro
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.
 
WRInaute discret
Merci
Je précise être une cruche.
En remplaçant par ton code cela ne fonctionne pas malheureusement.
 
WRInaute occasionnel
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.
 
WRInaute discret
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.
 
WRInaute accro
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 ?
 
WRInaute occasionnel
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.
 
WRInaute discret
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
 
WRInaute discret
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
 
WRInaute occasionnel
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:
 
WRInaute discret
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'
 
WRInaute accro
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>';
 
WRInaute discret
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
 
WRInaute discret
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
 
Discussions similaires
Haut