Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3371 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [Résolu] [PHP] Fonction récursive listage de répertoire

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu] [PHP] Fonction récursive listage de répertoire

n°1174610
Tirkyth
Posté le 11-08-2005 à 14:52:08  profilanswer
 

Bonjour à tous. Alors voilà, je dois me faire une petite fonction récursive de listage de répertoire, mais évidemment elle fonctionne pas  :lol:  
 
Pour le moment, je fais les tests en local, je suis sous windows 2000, et la chose se présente comme ceci :
 
Mon arborescence : (non triée par ordre alphabétique, ceux qui terminent par \ sont des répertoires)


C:\Tests\Ressources\
                    test\
                         toto\
         images\
                banniere.png
         icones\
         chips\
               Lays\
         toto\
              test\
         index.php
         func.php
 


 
index.php : la page "standart"
func.php : contient diverses fonctions, notemment la fonction listrep
 
Donc dans la page d'index, si je récupère une variable $_GET['dir'] , je la met dans $to_list et si il n'y en a pas, je met dans $to_list la valeur './Ressources'
 
J'appelle donc ma fonction par listrep($to_list, 0);
 
Et quand il liste le dossier Ressources par défaut, il ne trouve rien  :heink:  
 
Par contre, si je rajoute derrière mon url ?dir=./ il arrive a me lister
Ressources
images
icones
chips
toto
 
(Je ne veux que les répertoires ;))
 
Voilà donc je comprend pas vraiment pourquoi, j'ai pourtant relu plein de fois le code et je ne trouve vraiment pas ce qui lui pose probleme. Je vous laisse la fonction listrep ci-dessous :

Code :
  1. function listrep($dir, $level) // Paramètres : $to_list: Chemin complet à analyser. $num : Variable qui commence à 0 et qui s'auto-incrémente à chaque exploration de sous-dossier.
  2. {
  3. /* Récupération du répertoire courant à lister, ainsi que du suivant. */
  4. $i = 0; // Initialisation d'un index.
  5. if (substr($dir, strlen($dir) - 1, 1) != "/" ) // Vérification du fait que le dernier caractère soit différent d'un '/'
  6. {
  7.  $dir = $dir . "/"; // Si c'est le cas, rajout d'un '/' à la fin.
  8. }
  9. $dir = str_replace("\\", "/", $dir); // Remplace les '\' par '/'
  10. $dir = str_replace("//","/", $dir); // Remplace les '//' par '/'
  11. $tableau = explode("/", $dir); // Séparation de $dir par les '/'
  12. $cur = $tableau[$i++]; // affectation du premier membre dans $cur.
  13. for ($j = 0; $j < $level && isset($tableau[$i]) && $tableau[$i] != ""; $j++, $i++) // Rajout des membres du tableau en fonction de la variable $level
  14. {
  15.  $cur = $cur . '/' . $tableau[$i];
  16. }
  17. echo "Dossier courrant à lister : $cur<br />";
  18. if (isset($tableau[$i]) && $tableau[$i] != "" ) // Si il reste encore des éléments dans le tableau
  19. {
  20.  $next = $tableau[$i]; // On met le nom du prochain dans $next.
  21. }
  22. echo "Le sous dossier suivant sera : $next<br />";
  23. /* Listage du répertoire courrant. */
  24. if (is_dir($cur)) // Vérification du fait que le dossier à lister soit bien un répertoire.
  25. {
  26.  if ($handle = opendir($dir)) // Vérification du fait que la fonction opendir s'est bien éxécutée.
  27.  {
  28.   echo "<ul class=\"list_menu\">\n"; // Nouvelle liste car nouveau listage.
  29.   while (($entry = readdir($handle)) !== false) // Tant que la fonction readdir renvoi des entrée de répertoire
  30.   {
  31.    if (is_dir($entry) && $entry != "" && $entry != "." && $entry != ".." ) // Si l'entrée est un répertoire valide et différent de '.' et '..'
  32.    {
  33.     if (isset($next) && $entry == $next) // Si l'entrée est identique à celle contenue dans next.
  34.     {
  35.      echo '<li><a href="index.php?dir=' . $cur . '/' . $entry . '">' . $entry . "</a></li>\n"; // On en affiche un lien
  36.      listrep($dir, $level + 1); // Et on liste le répertoire
  37.     }
  38.     else
  39.     {
  40.      echo '<li><a href="index.php?dir=' . $cur . '/' . $entry . '">' . $entry . "</a></li>\n"; // On en affiche un lien
  41.     }
  42.    }
  43.   }
  44.   echo "</ul>"; // Fin de la liste
  45.   closedir($handle); // Fermeture du dossier
  46.  }
  47. }
  48. }


 
Merci à ceux qui jèteront un oeil  :jap:  
 
Je trouve tellement pas la solution que je me demande si c'est les tests en local qui foirent...


Message édité par Tirkyth le 12-08-2005 à 15:40:34

---------------
Mon Feedback !
mood
Publicité
Posté le 11-08-2005 à 14:52:08  profilanswer
 

n°1174707
Neofunk
Posté le 11-08-2005 à 16:25:13  profilanswer
 

Salut,
 
Et quand tu execute ca t'affiche koi?

n°1174722
Tirkyth
Posté le 11-08-2005 à 16:43:45  profilanswer
 

Bin comme j'ai dit, avec le repertoire de base il affiche rien. Si je lui met index.php?dir=./ il va bien lister par contre. Tous les autres répertoires ca liste pas.


---------------
Mon Feedback !
n°1174728
Neofunk
Posté le 11-08-2005 à 16:47:51  profilanswer
 

Oui d'accords mais est-ce qu'il t'affiche les textes qui sont présents dans ton script php? au moins(     echo "Dossier courrant à lister : $cur<br />";  par exemple) ? où y'as t'il un mess d'erreur?

n°1174731
Tirkyth
Posté le 11-08-2005 à 16:49:36  profilanswer
 

ah oui ca ca s'affiche correctement


---------------
Mon Feedback !
n°1175282
Tirkyth
Posté le 12-08-2005 à 15:40:14  profilanswer
 

Bon je l'ai recommencée ce matin, elle est maintenant fonctionnelle.
 
Merci quand même :jap:


---------------
Mon Feedback !

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [Résolu] [PHP] Fonction récursive listage de répertoire

 

Sujets relatifs
[VBA Excel - resolu] ajout d'une feuille[PHP] SESSION et COOKIE
Utilisation d'une fonction ?Fonction javascript + variable php
[RESOLU] Display: block pour le lien sous IE[RESOLU] -> [FMX/MySQL] GET ou POST??
[Résolu] récupérer un objet au format "time"[SVG] comment mettre à jour Mysql avec un fichier SVG ? [RESOLU]
Cloner un objet Document [résolu : pas possible] 
Plus de sujets relatifs à : [Résolu] [PHP] Fonction récursive listage de répertoire


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR