Lister un répertoire de dossiers

Fermé
rivka95 Messages postés 80 Date d'inscription mardi 15 mars 2011 Statut Membre Dernière intervention 27 mars 2015 - 8 janv. 2014 à 10:56
rivka95 Messages postés 80 Date d'inscription mardi 15 mars 2011 Statut Membre Dernière intervention 27 mars 2015 - 9 janv. 2014 à 09:31
Bonjour,

Je sais que la fonction readdir() permet de lister le contenu d'un dossier à télécharger.
Maintenant je souhaite pouvoir ouvrir un dossier contenant des fichiers et des dossiers qui contiennent eux mêmes des fichiers.
Quelqu'un saurait-il m'aider ???
Merciii !

Lynda
A voir également:

5 réponses

Super_carotte Messages postés 1419 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 27 janvier 2015 127
8 janv. 2014 à 12:04
as tu essayer avec une fonction récursive sur raddir ?
0
rivka95 Messages postés 80 Date d'inscription mardi 15 mars 2011 Statut Membre Dernière intervention 27 mars 2015
8 janv. 2014 à 12:27
Merci pour ta réponse, je découvre la fonction et je cherche en fonction de ce que tu me conseilles mais ne suis pas certaine de bien comprendre. Si tu peux me donner plus de détails...

Ci-après mon code pour plus de clarté :


$dir_nom = 'nom_du_dossier';
$dir = opendir($dir_nom) or die('Erreur de listage : le répertoire n\'existe pas');
$fichier= array();
$dossier= array();

while($element = readdir($dir)) {
if($element != '.' && $element != '..') {
if (!is_dir($dir_nom.'/'.$element)) {$fichier[] = $element;}
else {$dossier[] = $element;}
}
}

closedir($dir);

if(!empty($fichier)){
sort($fichier);

echo '<div class="style_css">Liste des fichiers '.$dir_nom.' :</div>';
echo "\t\t<ul>\n";
foreach($fichier as $lien) {
echo "\t\t\t<li><a href=\"$dir_nom/$lien \">$lien</a></li>\n";
}
echo "\t\t</ul>";
}


merci à toi !
0
mandolorien Messages postés 109 Date d'inscription dimanche 9 septembre 2012 Statut Membre Dernière intervention 9 mars 2018 3
Modifié par mandolorien le 8/01/2014 à 18:53
coucou

# le dossier que tu veux repertorier
$dir_nom = '../../ccm/';

$dir = opendir($dir_nom) or die('Erreur de listage : le répertoire n\'existe pas'); # test d'existance

$fichier= array(); # tableau des fichiers
$dossier= array(); # tableau des dossiers

//tant qu'il y a un fichier a lire
while($element = readdir($dir)) 
{
 # $element c'est le  nom du fichier mais il y a aussi le . et ..
 # donc si c'est differents de . et ..
 if($element != '.' && $element != '..')
 {
  # is_dir permet de savoir si c'est chemin relatif donc en gros 
  # is_dir('a_file.txt') retourne faux
  # is_dir('..') retourne vrai
  if (!is_dir($dir_nom.'/'.$element)) 
  {
   # on sais que c'est un fichier
   $fichier[] = $element;
  }
  else 
  {
   # on sais que c'est un dossier
   $dossier[] = $element;
  }
 }
}
# on ferme le dossier d'ouverture
closedir($dir);

# si le fichiers ne sont pas vides
if(!empty($fichier))
{
 # sort permet de trier les fichiers du plus petit au plus grand
 sort($fichier);

 echo '<div class="style_css">Liste des fichiers '.$dir_nom.' :</div>';
 echo "\t\t<ul>\n";
 foreach($fichier as $lien) {
 echo "\t\t\t<li><a href=\"$dir_nom/$lien \">$lien</a></li>\n";
 }
 echo "\t\t</ul>";
}



mais je te conseille d'utiliser cette petite fonction si tu veux la listes des fichiers et sous dossier :

function ScanDirectory($Directory){

  $MyDirectory = opendir($Directory) or die('Erreur');
        while($Entry = @readdir($MyDirectory)) {
                if(is_dir($Directory.'/'.$Entry)&& $Entry != '.' && $Entry != '..') {
      echo '<ul>'.$Directory;
                        ScanDirectory($Directory.'/'.$Entry);
                        echo '</ul>';
                }
                else 
    {
     if($Entry!='.' && $Entry!='..')
     {
                        echo '<li>'.$Entry.'</li>';
     }
                }
        }
  closedir($MyDirectory);
}


donc pour l'exemple :

ScanDirectory('adresse du dossier racine');


si tu veux un exemple :)

http://www.nacatiks.com/ccm/p2/
Admire la personne qui te critique , car prisonniere de ca propre jalousie elle ne fais que t admirer
0
rivka95 Messages postés 80 Date d'inscription mardi 15 mars 2011 Statut Membre Dernière intervention 27 mars 2015
9 janv. 2014 à 07:44
Merci beaucoup pour ces détails, c'est cool !
Je vais essayer, je te dirai ensuite...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
rivka95 Messages postés 80 Date d'inscription mardi 15 mars 2011 Statut Membre Dernière intervention 27 mars 2015
9 janv. 2014 à 08:37
Une question mandolorien, cette fonction permet-elle l'accès aux dossiers et fichiers ou bien affiche t-elle seulement la liste ?
Moi je souhaite pouvoir accéder aux fichiers et dossiers.


Merci
0
mandolorien Messages postés 109 Date d'inscription dimanche 9 septembre 2012 Statut Membre Dernière intervention 9 mars 2018 3
9 janv. 2014 à 09:22
uniquement la liste ,

effectivement j'ai zappé le système de lecture , si j'ai bien compris , quand tu clique sur un dossier , ça te renvoi vers une page avec la liste des fichiers puis en cliquant sur un fichier tu voudrais avoir accès au contenue ?
0
rivka95 Messages postés 80 Date d'inscription mardi 15 mars 2011 Statut Membre Dernière intervention 27 mars 2015
9 janv. 2014 à 09:31
T'as bien compris, c'est exactement ça ! le code que j'ai mis plus haut permet bien d'afficher la liste des fichiers contenus dans un dossier et d'en lire ou télécharger le contenu. En revanche, les sous-dossiers (et leurs contenus) ne sont pas détectés...
0