[PHP] newbie, lecture recursive d'un dossier et tri

newbie, lecture recursive d'un dossier et tri [PHP] - PHP - Programmation

Marsh Posté le 03-05-2005 à 13:11:44    

bonjour,
j'ai trouver plein d'infos sur comment regler mon problème mais étant donné que je suis une vraie bille en php, j'en appelle humblement à votre bonne âme  :sweat:  
 
j'ai trouver un script qui me fait une mise en page qui me conviens et tout et tout, je n'ai qu'un soucis: le listage moisi des repertoires avec la fonction readdir()  :fou:  
bon alors j'ai fait des recherches et j'ai fini par comprendre que si je voulais un tri alphabétique 'il me falais d'abord insérer les nom de dossiers dans un tableau puis le trier avec la fonction sort().
A la bonne heure  :D
 
voici le script en question:
 

Code :
  1. <?php
  2. function liste($dir){
  3. if($_GET[v]){ $v=$_GET[v]; }
  4. $dossier=opendir($dir);
  5. while($fichier=readdir($dossier)){
  6. $berk=array('.', '..');
  7. if(!in_array($fichier,$berk)){
  8. $lien="$dir/$fichier";
  9. $nbrT=count(split("/",$lien))-2;
  10. if($v==$lien){ $here='<span class="here">';$hereEnd='</span>'; } else{ $here='<span class="hereOn">';$hereEnd='</span>'; }
  11. $space="";
  12. for($i=1; $i<$nbrT; $i++){ $space.='&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'; }
  13. if(is_dir($dir."/".$fichier)){
  14. echo $space.'<img src="/tutoriel/rep.jpg" border="0"> '.$here.'<b> <a href="index.php?v='.$lien.'">'.ucfirst($fichier).'</a> </b>'.$hereEnd.'<br />';
  15. liste("$dir/$fichier" );
  16. }
  17. }
  18. }
  19. }
  20. function listeFichier($dir){
  21. if($_GET[v]){ $v=$_GET[v]; }
  22. $dossier=opendir($dir);
  23. while($fichier=readdir($dossier)){
  24. $berk=array('.', '..');
  25. if(!in_array($fichier,$berk)){
  26. $lien="$dir/$fichier";
  27. if(!is_dir($dir."/".$fichier)){
  28. echo ' '.ucfirst($fichier).' <br />';
  29. }
  30. }
  31. }
  32. }
  33. $v=htmlentities($_GET[v]);
  34. $situation=str_replace("./test/","",$v); $situation=str_replace("/"," > ",$situation);
  35. echo '<table width="100%"><tr valign="top"><td width="200">';
  36. liste("./test" );
  37. echo '</td><td>
  38. <b>Les fichiers</b> ['.$situation.']<br /><br />';
  39. if($v){ listeFichier($v); }else{ echo 'Cliquez sur un répertoire'; }
  40. echo '</td></tr></table>';
  41. ?>


 
comme précisé dans le titre du topic, je suis newbie en php  :o  
en lisant le script j'avais cru comprendre que $fichier était un tableau mais un sort($fichier) n'a vraiment rien de concluant malheureusement.
Tout ce que je souhaiterais, c'est un bon coup de main pour m'aider à modifier ce script afin qu'il affiche dossiers et fichiers par ordre alphabétique croissant.
 
durant mes recherches sur le net, j'ai appris l'existance d'une fonction scandir() mais c'est pour php5 :o
 
merci d'avance pour votre aide :jap:


Message édité par smea le 03-05-2005 à 13:13:02
Reply

Marsh Posté le 03-05-2005 à 13:11:44   

Reply

Marsh Posté le 03-05-2005 à 14:06:34    

Salut,
Il te suffit de faire :
$tab_dir=array{};
$tab_file=array{};
 
if(is_dir($dir."/".$fichier))
   array_push($tab_dir,$fichier)
else
   array_push($tab_file,$fichier)
 
sort($tab_dir);sort($tab_file);
 
array_merge($tab_dir,$tab_file);
 
Puis ensuite tu affiche le contenu de ton tableau avec un foreach.
 
Voilà. J'espère que j'ai bien répondu à ta question.

Reply

Marsh Posté le 22-12-2008 à 16:53:15    

petite correction :  
 

Code :
  1. $tab_dir=array();
  2. $tab_file=array();
  3. $dossier=opendir($dir);
  4. while($fichier=readdir($dossier)){
  5. if(is_dir($dir."/".$fichier)){
  6.    array_push($tab_dir,$fichier);
  7. }
  8. else
  9. {
  10.    array_push($tab_file,$fichier);
  11. }
  12. }
  13. sort($tab_dir);sort($tab_file);
  14. $final=array();
  15. $final=array_merge($tab_dir,$tab_file);
  16. foreach($final as $k)
  17. {
  18. echo $k."<br />";
  19. }


 
Bon courage

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed