Afficher le contenu d'un repertoire par ordre alphanumérique

Petit nouveau ! | 2 Messages

17 mai 2006, 17:06

Hello, je débute alors merci de votre indulgence.

Je parcours mon dossier ainsi.
<?php
include("pictures/pic_lib.inc.php"); 
if ($handle = opendir($url_picture_gallery)) 
{
    while (false !== ($file = readdir($handle))) 
		{
        if ($file != "." && $file != "..") 
		{
		 	echo $file;
        }
    }
    closedir($handle);
}
?>
Mais je voudrais que l'affichage ce fasse par ordre alphanumérique. Comment dois-je mis prendre ?

Merci de votre réponse

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

17 mai 2006, 17:20

Je ne comprend pas :-k

Normalement, opendir() parcours les résultas dans cet ordre là.

Quel ordre obtiens tu ?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Petit nouveau ! | 2 Messages

17 mai 2006, 17:27

Je ne comprend pas :-k

Normalement, opendir() parcours les résultas dans cet ordre là.

Quel ordre obtiens tu ?
Un ordre complètement aléatoire quand je fais un nouveau dossier (c'est des dossiers que je veux lister) une fois il me le mets en premier, une autre fois au milieu, ou à la fin, bref nimporte ou.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

17 mai 2006, 17:32

Il est possible que ton systeme utilise un ordre ascii, plaçant ainsi les noms commençant par une majuscule avant ceux commençant par une minuscule...

Je ne sais pas si ça se paramètre, mais au pire, tu peux stocker ces noms dans un tableau et utiliser la fonction sort() :)

Invité
Invité n'ayant pas de compte PHPfrance

18 mai 2006, 12:43

Il est possible que ton systeme utilise un ordre ascii, plaçant ainsi les noms commençant par une majuscule avant ceux commençant par une minuscule...
Je n'utilise toujours que des miniscule, par créer mon tableau depuis le scan du dossier que dois-je utiliser : foreach. Mieux encore peux tu me donner le bout de code.

Mille merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

18 mai 2006, 12:55

Il faut dans un premier temps modifier ton code pour conserver le nom du dossier dans un tableau au lieu de l'afficher, puis trier ce tableau. Tu pourras alors utiliser un foreach ou n'importe quel autre boucle pour l'afficher :
$dirTab = array(); // on déclare le tableau
if ($handle = opendir($url_picture_gallery)) { 
    while (false !== ($file = readdir($handle))) { 
        if ($file != "." && $file != "..") { 
             // echo $file; 
             $dirTab[] = $file; // on ajoute le nom du dossier dans le tableau
        } 
    } 
    closedir($handle); 
} 
sort($dirTab); // tri le tableau
Tu peux ensuite utiliser $dirTab comme bon te semble maintenant qu'il est trié.. par exemple avec un foreach :
foreach($dirTab as $dir) { // ta boucle pour parcourir le tableau
  echo $dir; // l'affichage ou autre
}