lister un repertoire et ses sous repertoires

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : lister un repertoire et ses sous repertoires

par Ryle » 15 févr. 2007, 12:09

Modération : Pas de UP sur PHPFrance :non:

Qu'obtiens-tu si tu fais un print_r() de ton tableau $ListFiles uen fois sorti du while ? Peut-être devrais tu d'ailleurs déclarer ce tableau avant d'entrer dans le while : $ListFiles = array();

Tu peux aussi mettre un echo avant et dans le if(is_dir()) pour vérifier quel nom de fichier/dossier il lit et s'il le met ou non dans ton tableau :)

Quant à ton _notes, je ne vois vraiment pas d'où il peut provenir s'il n'est pas dans ton dossier test/

par Zurg » 15 févr. 2007, 09:23

Personne ne voit mon erreur ? #-o

par Zurg » 14 févr. 2007, 11:06

Bonjour tout le monde,

Et si par exemple, je ne veux afficher que les sous repertoires d'un repertoire donné ?

j'ai ce code là, il ne marche pas, pourquoi ?
<?php
$rep = "test/";

    
// ouvre le rep
  $dp = opendir($rep);

  $i=0;
  while ( $file = readdir($dp) )
  	{
    // enleve les fichiers . et ..
    if ($file != '.' && $file != '..')
    	{
		if (is_dir($file))
			{	
            // on passe les datas dans un tableau
            $ListFiles[$i]=$file;
            $i++;
			}
    	}
 	}
  closedir($dp);
  $i=0;
  while ( $i < count($ListFiles))
  	{
      echo $ListFiles[$i]."<br>";
      $i++;
 	  }
?>
Et à l'affichage, je n'ai comme résultat qu'un repertoire _notes qui n'est même pas contenu par le dossier test/ mis dans la variable $rep

En revanche, si j'enlève la condition sur le statut du fichier, ça m'affiche bien tout le contenu de ce sous repertoire, fichiers et sous repertoires inclus.

Où me suis-je trompé?

Merci :shock:

par Zurg » 13 févr. 2007, 12:53

Dak,

et donc je la place au niveau du début du fichier ? Parcequ'elle sera sur une page appellée à se recharger plusieurs fois...

Et pour info, la fonction + le paramètre ressembleraient à :

function parcoure ($rep) c'est ça ?

par Ryle » 13 févr. 2007, 12:51

Ouep, dans un premier temps il te faut la transformer en une fonction qui prendrait en paramètre le chemin du dossier que tu veux lire :)

Dans un premier temps, contente toi d'afficher les dossiers et fichiers qu'il contient (à l'exception des . et ..) :)

Ensuite, à l'aide de la fonction is_dir() tu peux tester si un enregistrement est un dossier ou un fichier.

Dans le cas d'un fichier on test s'il s'agit d'un .doc pour l'afficher normalement. Dans le cas d'un dossier, on va l'afficher également et rappeller la fonction en lui donnant le chemin du sous-dossier ("chemin du dossier précédent" / "sous-dossier")

par Zurg » 13 févr. 2007, 12:43

Euh...

D'accord, comment qu'on fait ?

il faut que je transforme ce que j'ai fait en fonction ?

par Ryle » 13 févr. 2007, 12:37

Que dirais-tu d'une fonction récursive ?

Pour chaque élément trouvé dans ton dossier, tu testes s'il s'agit d'un fichier ou d'un dossier. Si c'est un fichier tu affiches son nom (avec les tests qui vont bien comme le .doc) et si c'est un dossier, tu rappelles la fonction en lui passant le nouveau dossier en paramètre :)

lister un repertoire et ses sous repertoires

par Zurg » 13 févr. 2007, 12:34

Bonjour tout le monde,

voici mon problème :

j'ai cette arborescence :
/docs

/dossier1
/archives
/news

/dossier2
/archives
/news

/dossier3
/archives
/news
etc...

Je voudrais écrire un script qui liste les dossiers1 2 3, ainsi que leurs sous dossiers,et uniquement les dossiers .doc contenus dans ces derniers.

J'ai déjà réussi à lister les dossiers de type dossier1 et à afficher uniquement les .doc

Voici comment :
// $d -> est lu par dir()
				// $rep est le chemin pour le lien
				// $repl est le nom du fichier avec %20 à la place des espaces
				// $entry_substr est le nom du fichier sans extension
				
				$d = dir(substr($rep,0,-1));
				while($entry = $d->read()) 
					{
					// on n'affiche pas les repertoires '.' et '..'
					if ($entry <> '.' && $entry <> '..')
						{
						// on affiche uniquement les fichiers '.doc'
						if (substr($entry,-3) == "doc")
							{
							$repl = str_replace(" ", "%20", $entry);
							$entry_substr = substr($entry,0,strlen($entry));
							// affichage du lien vers le document
							echo "<a href=".$rep.$repl.">".$entry_substr."</a><br>\n";
							}
						}
					}
				// on referme le pointeur
				$d->close(); 
Un petit coup de pouce pour l'arborescence suivante ? :)

Merci :!: