PHP Afficher le contenu d'un dossier et de ses sous-dossiers

Résolu
jibtothenight Messages postés 22 Date d'inscription jeudi 13 mars 2008 Statut Membre Dernière intervention 13 octobre 2008 - 17 sept. 2008 à 16:55
 wytlyt - 31 mars 2013 à 16:48
Bonjour,
 avec ce code j'arrive à afficher le contenu de mon dossier :
<?php
$dir = opendir('intranet/image_hd/');
while($file = readdir($dir)) {
echo "$file
";
}
closedir($dir);
?>
 mais les sous-dossiers s'affichent comme des fichiers .
Je  voudrais afficher l'arborescence de ces sous-dossiers si c'est possible

Si quelqu'un peut m'aider SVP ?

Merci d'avance

14 réponses

huberdine Messages postés 158 Date d'inscription samedi 8 février 2003 Statut Membre Dernière intervention 17 juin 2010
17 sept. 2008 à 18:03
Salut,
essaye la fonction is_dir :
<?php
$dir = opendir('intranet/image_hd/');
while($file = readdir($dir)) {
if(is_dir($file))
echo "Sous dossier : ".$file."
";
else
echo "[intranet/image_hd/".$file." ".$file."]
";
}
closedir($dir);
?>
0
huberdine Messages postés 158 Date d'inscription samedi 8 février 2003 Statut Membre Dernière intervention 17 juin 2010
17 sept. 2008 à 18:05
Visiblement, Chrome a du mal avec codesources
Je reposte mon message sous FF :

<?php
$dir = opendir('intranet/image_hd/');
while($file = readdir($dir)) {
if($is_dir($file))
echo "Sous répertoire : ".$file."
";
else
echo "".$file."' target='_blank'>".$file."
";
}
closedir($dir);
?>
0
huberdine Messages postés 158 Date d'inscription samedi 8 février 2003 Statut Membre Dernière intervention 17 juin 2010
17 sept. 2008 à 18:07
Oups, il fallait lire
if(is_dir($file))

et non

if($is_dir($file))
0
jibtothenight Messages postés 22 Date d'inscription jeudi 13 mars 2008 Statut Membre Dernière intervention 13 octobre 2008
17 sept. 2008 à 18:08
pourrais tu développer ou donner un exemple stp ?


désolé je suis encore débutant en php.
0

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

Posez votre question
jibtothenight Messages postés 22 Date d'inscription jeudi 13 mars 2008 Statut Membre Dernière intervention 13 octobre 2008
17 sept. 2008 à 18:20
je viens d'essayer le code.
le serveur me dit qu'il y a un problème de string sur la ligne :  du while

si tu as une idée ?
0
huberdine Messages postés 158 Date d'inscription samedi 8 février 2003 Statut Membre Dernière intervention 17 juin 2010
17 sept. 2008 à 18:26
tu peux faire un peu de récursivité pour afficher l'arborescence.
La récursivité consiste à appeler une fonction qui va s'appeler elle même.
Ex ,pour parcourir des fichiers :

<?php
function parcours_dossier($chemin_dossier)
{
// On ouvre le dossier à lire
$dossier = opendir($chemin_dossier);
// On parcours l'ensemble des éléments présent dans le dossier
while($element = readdir($dossier))
{
// On ne s'occupe ni du répertoire courant ni du répertoire parent
if(($element != ".") && ($element != ".."))
{
// Si le fichier est un dossier
if(file_exists($chemin_dossier."/".$element) && is_dir($chemin_dossier."/".$element))
{
echo "dossier : ".$chemin_dossier."/".$element."
";
// On parcours les sous dossiers (c'est ici qu'intervient la récursivité car la fonction s'appelle elle-même)
parcours_dossier($chemin_dossier."/".$element);
}
else
{
echo "fichier : ".$chemin_dossier."/".$element."
";
}
}
}
closedir($dossier);
}
// On appelle la fonction de parcours des dossiers
parcours_dossier(".");
?>
0
huberdine Messages postés 158 Date d'inscription samedi 8 février 2003 Statut Membre Dernière intervention 17 juin 2010
17 sept. 2008 à 18:29
>je viens d'essayer le code.


>le serveur me dit qu'il y a un problème de string sur la ligne :  du while



>si tu as une idée ?



Regarde mon 3° message ...
0
jibtothenight Messages postés 22 Date d'inscription jeudi 13 mars 2008 Statut Membre Dernière intervention 13 octobre 2008
17 sept. 2008 à 18:32
ou rentre tu le chemin du dossier de départ ? 
0
huberdine Messages postés 158 Date d'inscription samedi 8 février 2003 Statut Membre Dernière intervention 17 juin 2010
17 sept. 2008 à 18:37
>ou rentre tu le chemin du dossier de départ ?

à la dernière ligne du script :
parcours_dossier(".");

. signifie le répertoire courant (c'est à dire celui dans lequel se trouve le fichier php appelé)
Il suffit de remplacer le . par le chemin du répertoire que tu veux parcourir
0
jibtothenight Messages postés 22 Date d'inscription jeudi 13 mars 2008 Statut Membre Dernière intervention 13 octobre 2008
18 sept. 2008 à 10:15
Merci beaucoup Huberdine, ça marche NIKEL !!!

et un grand merci à Codessources.com
0
huberdine Messages postés 158 Date d'inscription samedi 8 février 2003 Statut Membre Dernière intervention 17 juin 2010
18 sept. 2008 à 11:16
Je t'en prie.
N'oublies pas de marquer le sujet comme résolu ;-)
Bon courage pour la suite.
0
jibtothenight Messages postés 22 Date d'inscription jeudi 13 mars 2008 Statut Membre Dernière intervention 13 octobre 2008
18 sept. 2008 à 14:06
Je veux bien mais comment fait-on ?
0
bonjour,

j'utilise ce script que j'ai un peu adapté à mes besoins pour faire une galerie de photos, j'aimerai seulement que les sous-dossiers s'affichent par ordre alphabétique inversé, mais je ne vois pas où placer le rsort();

si quelqu'un peut m'aider, je tourne en rond
0
huberdine Messages postés 158 Date d'inscription samedi 8 février 2003 Statut Membre Dernière intervention 17 juin 2010
18 sept. 2008 à 14:15
Tu cliques sur le bouton 'Réponse acceptée' à droite de la (ou les) réponse(s) qui te semble(nt) pertinente(s).
Cela marquera automatiquement le thread comme résolu.
-1
Rejoignez-nous