Ordre de listage d'un répertoire [Résolu]

Signaler
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
-
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
-
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

Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
13 septembre 2013
3
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???"
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
Ok merci bcp alors, je vais essayer ça!
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
effectivement je n'ai eu qu'à rajouter ça:

sort($this->listFiles);