Bonjour

J'ai un script de galerie qui marche mais je voudrais remplacer l'ordre alphabétique par un ordre aléatoire. Comment on fait ?

<?php 
/*
Ce script offre la possibilité d'afficher des images de format GIF, JPG ou PNG.
*/
define('ALPHABETIC_ORDER', true); // Classer les fichiers et les dossiers par ordre alphabétique / false pour non classé
define('PHOTOS_DIR', 'photos'); //nom du répertoire un seront stockés les sous répertoires de photos
define('THUMBS_DIR', 'miniatures'); // nom des répertoires contenant les fichiers de miniatures
define('ICO_FILENAME', '_icon.jpg'); // nom de l'icone créée à partir de la 1ère image de chaque répertoire
define('ICO_WIDTH', '225'); // largeur de l'image de l'icone en pixel / ne pas dépasser la moitié de l'image originale
define('ICO_HEIGHT', '75'); // hauteur de l'image de l'icone en pixel / ne pas dépasser la moitié de l'image originale
define('MINIATURE_MAXDIM', '120'); // largeur de l'image de miniature en pixel / ne pas dépasser la moitié de l'image originale
define('GLOBAL_JPG_QUALITY', '80'); // taux de compression des jpg créés
/* 
La capacité du script à créer vos miniatures photo dépend de la rapidité d'execution de votre serveur :
plus vous choisissez d'afficher de photos par page, plus il sera lent à la première execution.
Une fois créées, les photos restent sur le serveur.
 */
define('MINIATURES_PER_PAGE', 18); //nombre de miniatures à afficher par page
define('MINIATURES_PER_LINE', 6); //nombre de miniatures à afficher par ligne dans les tableaux
define('HOME_NAME', 'LES DOSSIERS PHOTO'); //nombre de miniatures à afficher par ligne dans les tableaux
define('ICO_PER_PAGE', 12); //nombre de miniatures à afficher par page
define('ICO_PER_LINE', 3); //nombre de miniatures à afficher par ligne dans les tableaux
define('IMAGE_STDDIM', '640'); // largeur de l'image de miniature en pixel / ne pas dépasser la moitié de l'image originale
define('IMAGE_400', '400'); // largeur de l'image de miniature en pixel / ne pas dépasser la moitié de l'image originale
define('IMAGE_800', '800'); // largeur de l'image de miniature en pixel / ne pas dépasser la moitié de l'image originale
define('PHOTONAME_MAXCHAR', 17); // Nb max de caractères pour un nom de photo
?>


et ceci dans un fichier index :

// listage des répertoires et fichiers
if ($handle = opendir(PHOTOS_DIR)) {
   $cDir = 0;
   $cFile = 0;
   while (false !== ($file = readdir($handle))) {
		if($file != "." && $file != ".." &&  $file != THUMBS_DIR && $file != IMAGE_STDDIM && $file != IMAGE_400 &&  $file != IMAGE_800){
			if(is_dir(PHOTOS_DIR . "/" . $file)){
				$listDir[$cDir] = $file;
				$cDir++;
			}
			else{
				$listFile[$cFile] = $file;
				$cFile++;
			} 
		}
   }
   if (ALPHABETIC_ORDER == true) {
		usort($listDir,"strnatcmp");
	}
   closedir($handle);
}


Merci
Bonjour,
Que se passe-t-il en modifiant tes fichiers avec les textes en gras suivants:
...
define('ALPHABETIC_ORDER', [b]false[/b]); // Classer les fichiers et les dossiers par ordre alphabétique / false pour non classé
[b]define('SHUFFLE', true); // Mélanger les fichiers et les dossier / false pour non mélangés[/b]
define('PHOTOS_DIR', 'photos'); //nom du répertoire un seront stockés les sous répertoires de photos
...
Et dans le fichier index :
...
   if (ALPHABETIC_ORDER == true) {
		usort($listDir, "strnatcmp");
	}
[b]   if (SHUFFLE == true) {
		shuffle($listDir);
	}[/b]
   closedir($handle);
}

Modifié par Gothor (24 Apr 2012 - 13:30)
Ca semble correct mais erreur dans

//////////////////////////////////////////////////////////
//listing des miniatures dans un répertoire photo spécifié
//////////////////////////////////////////////////////////
case ('list'):
$photodir = (isset($_GET['dir']) ? $_GET['dir'] : "");
	if (!isset($_GET['dir']) || $_GET['dir'] == "") {//on vérifie que le répertoire photo existe bien ?>
		<table border="0" align="center" cellpadding="28" cellspacing="0">
		  <tr>
		    <td align="center"><span class="txtrouge">Vous devez spécifier un répertoire photo !</span>
		      <p>
			<form method="post"><INPUT TYPE="button" VALUE="Retour" onClick="history.go(-1)"></form>
			</td>
		</tr>
	</table>


ll indique l'erreur sur cette ligne :

case ('list'): Smiley decu
jb_gfx, je vais faire simple : je suis débutant. Je me débrouille comme je peux.

Aussi, je donne ce que j'ai comme infos. Cela n'empêche pas de rester cordial. Je ne suis pas un pro ici mais sur d'autres sujets je pourrais répondre de la même manière à tes posts, mais je ne le ferais pas.

Maintenant où vous êtes prêt à m'aider, où je passe mon chemin.

Merci

NB : si on faisait fonctionner cette société avec un peu de solidarité au lieu de réponses aussi *****, on avancerait tous cent fois plus vite avec moins d'effort et plus de plaisir. A méditer
Modifié par Kumbawa (24 Apr 2012 - 15:05)
Bonjour,

Toutefois, il n'a pas tort, sans l'erreur en question, difficile de t'aider... Tu dis qu'il y a une erreur, ce qui est sûrement fondé... Mais quelle est-elle ?
Kumbawa a écrit :
jb_gfx, je vais faire simple : je suis débutant. Je me débrouille comme je peux.

Aussi, je donne ce que j'ai comme infos. Cela n'empêche pas de rester cordial. Je ne suis pas un pro ici mais sur d'autres sujets je pourrais répondre de la même manière à tes posts, mais je ne le ferais pas.

Maintenant où vous êtes prêt à m'aider, où je passe mon chemin.

Merci

NB : si on faisait fonctionner cette société avec un peu de solidarité au lieu de réponses aussi *****, on avancerait tous cent fois plus vite avec moins d'effort et plus de plaisir. A méditer


Et au lieu de faire ta pleureuse pour rien et de partir dans tes délires, si tu répondais juste à ma question histoire qu'on avance ?
Modifié par jb_gfx (24 Apr 2012 - 17:17)
Je l'ai mis sur mon post précédent : il me met une erreur sur cette ligne

case ('list'):


La suite du code est collée sur le post précédent.

Edit : Maintenant je n'ai plus d'erreur mais toujours un tri alphabétique, alors que
define('ALPHABETIC_ORDER', false);


J'ai copié coller aux mêmes endroits que tu m'indiquais.
Modifié par Kumbawa (24 Apr 2012 - 20:02)