IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Fonction](recursive) Problème pour dresser un arbre


Sujet :

Langage PHP

  1. #1
    Invité
    Invité(e)
    Par défaut [Fonction](recursive) Problème pour dresser un arbre
    Que la paix soit sur vous Ô Programmeurs, Programmeuses.
    Allons droit au but !

    Ce que je cherche à faire c'est afficher à l'écran, un arbre de tous mes dossiers et fichiers, sans exception. Pour cela j'ai pris exemple dans ce tutoriel http://cyberzoide.developpez.com/php4/file/#rec, mais je ne sais pas pourquoi il m'affichait tout en désordre. J'ai donc utilisé la fonction sort() et adapté le code à mes besoins. Et ça m'a donné un autre problème, par exemple, disons qu'à la racine j'ai crée 3 dossiers et 3 fichiers qui sont recpectivement doss1, doss2, doss3, fichier1.htm, fichier2.htm et fichier3.htm. Et chaque dossier contient à son tour un autre dossier et ainsi de suite jusqu'à obtenir un truc dans ce genre :

    doss1
    doss11
    doss111

    doss2
    doss22
    doss222

    doss3
    doss33
    doss333

    fichier1.htm
    fichier2.htm
    fichier3.htm



    J'aimerais que ma fonction recursive(list_dir()) m'affiche ce qu'il ya ci-dessus mais voici ce qu'elle affiche :

    doss1
    doss11
    doss111

    doss2

    doss3

    fichier1.htm
    fichier2.htm
    fichier3.htm


    Elle ne déploie UNIQUEMENT le premier dossier qu'elle rencontre ! Pourtant j'ai l'impression que mon code n'a aucun défaut, dont voici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    <?php
    function list_dir($newdossier_courant)
    { 
     
      $domain = '/home/name/root';
     
      if($newdossier_courant=="")
      {
         $act = $domain;
    	 chdir($act);
      }
     
      else
      {
        $act = $domain . "/" . $newdossier_courant;
    	chdir($act);
      }
     
      $files = array();
      if ($dir = opendir("."))
      { 
        while(($file = readdir($dir)) !== false)
        { 
          	if($file != "." && $file != "..")
                 {
    	      $files[] = $file;
    	}
        } 
     
    	if((count($files)) > 0)
    	{
    		sort($files);
     
    		foreach($files as $v)
    		{
    			echo "$v<br>\n";
     
    			if(is_dir($v) == true)
    			{ 
    				if($newdossier_courant == "")
    				{   
    				   list_dir($v); 
    				   echo "<br>\n";
    				}
     
    				else
    				{   
    				   list_dir($newdossier_courant . "/" . $v); 
    				   echo "<br>\n";
    				}
    			} 
    		}
    	}
    	chdir($act);
        closedir($dir); 
      } 
    } 
    list_dir(""); 
    ?>
    Je vous remercie.

  2. #2
    Membre expérimenté
    Avatar de guitou12
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 077
    Points : 1 561
    Points
    1 561
    Par défaut
    Pourrais tu donner ta fonction chdir s'il te plait ?

  3. #3
    Membre actif
    Homme Profil pro
    Responsable d'une MOE bancaire
    Inscrit en
    Juillet 2003
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Responsable d'une MOE bancaire

    Informations forums :
    Inscription : Juillet 2003
    Messages : 261
    Points : 226
    Points
    226
    Par défaut
    Chdir est une fonction standard

  4. #4
    Membre actif
    Homme Profil pro
    Responsable d'une MOE bancaire
    Inscrit en
    Juillet 2003
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Responsable d'une MOE bancaire

    Informations forums :
    Inscription : Juillet 2003
    Messages : 261
    Points : 226
    Points
    226
    Par défaut
    Une fonction qui existe dans le manuel php + une touche de recursivité et ca donne ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    function list_dir($dir)
    {   
    	if ($handle = opendir($dir)) {	
     
       	while (false !== ($file = readdir($handle))) {
           if (($file != '.') && ($file != '..')) {
           		echo "$file<br>";
           		if (is_dir("$dir/$file"))
           			list_dir("$dir/$file");		
           }
       	}
     
       	closedir($handle);
      }
    }
     
    list_dir("D:/toto");

  5. #5
    Membre expérimenté
    Avatar de guitou12
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 077
    Points : 1 561
    Points
    1 561
    Par défaut
    Citation Envoyé par SegmentationFault
    Chdir est une fonction standard
    Au temps pour moi j'ai lu à moitié chdir avait un mauvais paramètre et n'était pas inconnu

Discussions similaires

  1. Fonction recursive pour un arbre
    Par sabotage dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2008, 09h54
  2. Problème pour la création d'une fonction
    Par jipé95 dans le forum C
    Réponses: 5
    Dernier message: 10/12/2006, 14h28
  3. Fonctions récursives pour parcourir un arbre
    Par mikedavem dans le forum C
    Réponses: 4
    Dernier message: 05/06/2006, 12h00
  4. Réponses: 7
    Dernier message: 10/09/2005, 16h49
  5. [DLL] problème pour appeler une fonction d'une DLL
    Par bigboomshakala dans le forum MFC
    Réponses: 34
    Dernier message: 19/07/2004, 11h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo