Problème récursivité pour arborescence de fichier

codbooster Messages postés 23 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 17 avril 2009 - 16 févr. 2009 à 12:38
codbooster Messages postés 23 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 17 avril 2009 - 17 févr. 2009 à 16:38
Bonjour à tous, et merci de à vous de prendre du temps pour lire mon post ...



Je post aujourd'hui car j'ai un problème concernant une arborescence de fichier. Je vais essayer d'être le plus explicite possible ...

Je liste tout les dossiers, sous-dossier et fichier, puis je les caches, pour après les afficher dans des
en Javascript et Css. Le problème arrive lorsque j'ai beaucoup de sous dossiers, ma fonction récursive ne semble pas être totalement efficace, car mais identifiants de
sont mal incrémentés, et ducoup mais div ne sont pas unique, ce qui crée un conflit et lorsque je click sur un lien pour afficher un div, c'est un autre qui s'affiche ...

Un exemple puis le code :) :

trois dossier : test1, test2, test3
1 sous dossier dans chaque dossier : test14 dans test1, test24 dans test2 et test34 dans test3

Lorsque je click sur test2, c'est le sous dossier test14 qui va apparaitre ... Celà n'arrive que lorsque j'ai beaucoup de dossier ... donc l'example est simplifié ...

Je vais
maintenant
vous montrer le code de ma fonction :

function list_Dossier($dirname,$monNbDossier, $choix = '', $monTableau='')
            {
                $dir = opendir($dirname);
                $nbDossier=$monNbDossier;
                $nbDossier++;
                echo $nbDossier;
                while($file = readdir($dir))
                {   
                        //-----------------Début de la partie de tri entre fichier et dossier******************
                            /* tableaux */
                            $tab_dir = array();
                            $tab_file = array();
                           
                            /* extraction */
                        if($file[0] != '.')
                        {
                              if(is_dir($dirname."/".$file)) {
                                  $tab_dir[] = $file;                 
                              } else {
                                  $tab_file[] = $file;
                              }
                        }
                            foreach($tab_file as $elem) {
                              $monextension=ereg("\.([^\.]*$)", $elem);
                              //echo $monextension;
                              echo '['.$dirname. '.$elem.'][#  ] [download.php?telecharger='.$dirname. ]
';
                            }
                            $nbDossier++;
                            foreach($tab_dir as $elem)
                            {           
                                if(isset($tab_dir[0]))
                                {                                                                      
                                    echo '[?p=ajoutFichierForm.php&directory='.$dirname. ] [# ]
';
?>
                                   
" class="coor">
<?php                                                           
                                        list_Dossier("./".$dirname."/".$elem, $nbDossier, $choix.'s', $monTableau);
?>
                                   

<?php
                                }                   
                            }
                        //----------------fin de la partie de tri*********************************************
                }     
            }

Merci beaucoup pour votre aide.

1 réponse

codbooster Messages postés 23 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 17 avril 2009
17 févr. 2009 à 16:38
je me suis auto aidé, je suis partis sur une solution ajax qui a chaque fois que je click sur lien me liste le contenu du fichier sélectionné.

Je vous montre juste le script php éxécuté sur le click :

Voilà HF

Alex.

<?php
        $dirname=$_POST['chemin'];
       
        if(isset($_POST['idParent']))
        {
            $idParent= $_POST['idParent'];
        }

        $dir = opendir($dirname); // on ouvre le dossier
        $tab = array();
        $index=0;
        while($file = readdir($dir)) // tants qu'il y a des fichiers
        {
            if($file != '.' && $file != '..')
            {
                $tab[$index]["chemin"]= $dirname."/".$file;
                $tab[$index]["id"]= $index;
               
                if(is_dir($dirname."/".$file)){                   
                    $tab[$index]["type"]= "dossier";                   
                }
                else
                {
                    $tab[$index]["type"]= "fichier";
                }
            }
            $index++;
        }
       
        for($i=2;$i<=count($tab)+1;$i++)
        {       
            if($tab[$i]["type"] == "dossier")
            {           
                echo '[?p=ajoutFichierForm.php&directory='.$tab[$i][ ]&nbsp;[# ]
';
                echo '

';
            }
            else
            {
                echo '['.$tab[$i][ '.$tab[$i]["chemin"].'][# &nbsp;]&nbsp;[download.php?telecharger='.$tab[$i][ ]
';
            }
        }
?>
0