fonctions de répertoire...
Posté : 30 nov. 2006, 01:14
Bonsoir à tous,
J'ai besoin sur un de mes sites, d'afficher une image aléatoirement,
et voici la structure de la partie de stockage des images:
donc voilà ce que je souhaite faire, tout d'abord choisir au hasard un utilisateur, ensuite aller dans maxi, et là choisir aléatoirement une photo
pour ce faire, j'ai fait cette fonction:
Ensuite, si vous avez des améliorations au niveau de la rapidité du code
J'ai besoin sur un de mes sites, d'afficher une image aléatoirement,
et voici la structure de la partie de stockage des images:
Code : Tout sélectionner
+photos/
+utilisateur1/
+maxi/
+mini/
+utilisateur2/
+maxi/
+mini/
+utilisateur3/
+maxi/
+mini/
etc
pour ce faire, j'ai fait cette fonction:
function random_image(){
//Répertoire de départ.
$rep_photos='./photos/';
$dir= dir($rep_photos);
// on récupères les différents utilisateurs (leur dossiers)
$dirs1=array();
while (false !== ($entry = $dir->read())) {
array_push($dirs1,$entry);
}
//on enlève le . et le ..
unset($dirs1[0]);
unset($dirs1[1]);
//on élimine d'éventuelles erreurs sur le tableau, et on le réindexe
$dirs1=array_filter($dirs1);
$dirs1=array_values($dirs1);
//on choisi au hasard un index qui donne un répertoire au hasard
$index=rand(0,count($dirs1)-1);
$rep_util=$dirs1[$index];
//on libère les ressources
$dir->close();
//on se place dans le répertoire choisi, puis dans le répertoire maxi de ce dernier
$dir2= dir($rep_photos.$rep_util.'/maxi/');
$dirs2=array();
//récupération des photos
while (false !== ($entry = $dir2->read())) {
array_push($dirs2,$entry);
}
// petite fontion qui élimine du tableau les fichiers autre qu'image, comme thumb par exemple
$dirs2=tri_photos_dir($dirs2);
// libération des ressources
$dir2->close();
//on retourne au hasard une des photos du dernier tableau, associé au chemin complet trouvé plus haut
return $rep_photos.$rep_util.'/maxi/'.$dirs2[''.rand(0,count($dirs2)-1).''];
}
ma question est, comment faire pour savoir si un répertoire et vide, et à ce moment la, l'enlever du tableau des répertoires utilisateur, (ou ne pas le mettre au départ)Ensuite, si vous avez des améliorations au niveau de la rapidité du code