Ordre de listage d'un répertoire

Résolu
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 - 4 juin 2005 à 00:45
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 - 4 juin 2005 à 12:52
Bonsoir!

j'ai trouvé la fonction suivante qui liste le contenu d'un répertoire et des sous-répertoires.

Elle marche parfaitement sous easyPHP mais le pb c'est que sur Free les
fichiers ne sont plus classés par ordre alphabétique mais selon un
ordre inconnu...

Est-ce que qqn a une idée du pk? et de ce qu'il faudrait changer?

c'est prêt en rapport avec listRep ou readdir mais je ne sais pas trop, surtout que je ne masterise pas encore le php :^ p



merci d'avance







<?php

//classe "récursive" repertoire



$idclass=0;



class repertoire

{

//propriétés

var $id;//identifiant unique de la classe

var $chemin;//chemin du répertoire en cours

var $nom;//nom du répertoire en cours

var $listRep;//tableau des classes filles (ou sous classes)

var $listFiles;//tableau des noms + dates de modification des fichiers du répertoire en cours



//constructeur

function repertoire($inChemin,$inNom)

{

global $idclass;



$this->id=$idclass;



$this->chemin=$inChemin;

$this->nom=$inNom;



$idclass++;//incrémentation pour la prochaine classe



if($inChemin!="")//déduction du chemin complet du repertoire

{

$fullpath=$inChemin."/".$inNom;

}

else

{

$fullpath=$inNom;

}



$handle=opendir($fullpath);



$tmp=0;//var d'increment -> tableau de sous classes

$tmp2=0;//var d'increment -> tableau de fichiers



while ($file = readdir($handle))//création des sous classe

{

if
(is_dir($fullpath."/".$file) && $file != "." && $file
!= "..")

{


//instanciation d'une nouvelle classe depuis cette classe


//j'appelle ça des classes récursives :-)


//tant qu'il y aura des sous répertoires des sous classes seront créees
...


//ex : pour rep1/rep2/rep3 =>
classe1->sousclasse2->sousclasse3 etc ...


//les unes imbriquées dans les autres :-P et accessibles avec le
tableau listRep


$this->listRep[$tmp]=new repertoire($fullpath,$file);

$tmp++;

}

else
if(is_file($fullpath."/".$file) && $file != "." &&
$file != "..")

{


clearstatcache();//effacement du cache (conseillé dans la doc ... donc
on le fait :-)

//liste des fichiers




$this->listFiles[$tmp2]='<td>['.$fullpath.'/'.$file.' '.$file.']</td>';

$tmp2++;

}

}



closedir($handle);

}



//fonction d'affichage en html

function toString()//un peu comme le toString() en java

{

echo"".$this->nom.", \n\";

for($i=0;$i<count($this->listFiles);$i++)

{

echo\"----
\".$this->listFiles[$i].\"\n\";

}

for($i=0;$i<count($this->listRep);$i++)

{

//on appelle les toString() des classes filles

echo\"----
, ----

<!-- ".$this->nom." -

->,

";

$this->listRep[$i]->toString();

echo", \";

echo\"\n\";

}

echo"

\n";

}

}



//DEBUT



$j=0;

$path='.';



$handle=opendir($path);

//listage des repertoires du répertoire où se trouve le script

while ($file = readdir($handle))

{

if (is_dir($file) && $file != "." && $file != "..")

{

$repertoire=new repertoire($path,$file);

$repertoire->toString();

}

}



closedir($handle);

//FIN

?>

3 réponses

coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
4 juin 2005 à 09:30
Salut!

Oui, en fait, dixit la doc php, "Les noms sont retournés dans l'ordre qu'ils sont enregistrés dans le
système de fichiers."



Ce que tu peux faire c'est mettre le tout dans un tableau, le trier et travailler sur ce tableau...



@++



R@f

www.allpotes.ch: Photos, humour, vidéos, gags, ...

"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
3
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
4 juin 2005 à 10:56
Ok merci bcp alors, je vais essayer ça!
0
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
4 juin 2005 à 12:52
effectivement je n'ai eu qu'à rajouter ça:

sort($this->listFiles);
0
Rejoignez-nous