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><FONT COLOR=#ffffff><a
href="'.$fullpath.'/'.$file.'">'.$file.'</a></font></td>';
$tmp2++;
}
}
closedir($handle);
}
//fonction d'affichage en html
function toString()//un peu comme le toString() en java
{
echo"<table border=0 border=0 cellspacing=0 cellpadding=0>
<tr><td width=415 colspan=2 align=center><b><FONT
COLOR=#de3707>".$this->nom."</FONT></b></td></tr>\n";
for($i=0;$i<count($this->listFiles);$i++)
{
echo"<tr><FONT color=#ffffff>".$this->listFiles[$i]."</FONT></tr>\n";
}
for($i=0;$i<count($this->listRep);$i++)
{
//on appelle les toString() des classes filles
echo"<tr><td colspan=2></td></tr><tr>
<td align=center valign=top><b><!-- <FONT COLOR=#ffffff>".$this->nom."</FONT> -
-></b></td>
<td>";
$this->listRep[$i]->toString();
echo"</td>";
echo"</tr>\n";
}
echo"</table><br><br>\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
?>