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

[Résolu]
Signaler
Messages postés
22
Date d'inscription
jeudi 13 mars 2008
Statut
Membre
Dernière intervention
13 octobre 2008
-
 wytlyt -
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

Messages postés
158
Date d'inscription
samedi 8 février 2003
Statut
Membre
Dernière intervention
17 juin 2010

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);
?>
Messages postés
158
Date d'inscription
samedi 8 février 2003
Statut
Membre
Dernière intervention
17 juin 2010

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);
?>
Messages postés
158
Date d'inscription
samedi 8 février 2003
Statut
Membre
Dernière intervention
17 juin 2010

Oups, il fallait lire
if(is_dir($file))

et non

if($is_dir($file))
Messages postés
22
Date d'inscription
jeudi 13 mars 2008
Statut
Membre
Dernière intervention
13 octobre 2008

pourrais tu développer ou donner un exemple stp ?


désolé je suis encore débutant en php.
Messages postés
22
Date d'inscription
jeudi 13 mars 2008
Statut
Membre
Dernière intervention
13 octobre 2008

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 ?
Messages postés
158
Date d'inscription
samedi 8 février 2003
Statut
Membre
Dernière intervention
17 juin 2010

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(".");
?>
Messages postés
158
Date d'inscription
samedi 8 février 2003
Statut
Membre
Dernière intervention
17 juin 2010

>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 ...
Messages postés
22
Date d'inscription
jeudi 13 mars 2008
Statut
Membre
Dernière intervention
13 octobre 2008

ou rentre tu le chemin du dossier de départ ? 
Messages postés
158
Date d'inscription
samedi 8 février 2003
Statut
Membre
Dernière intervention
17 juin 2010

>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
Messages postés
22
Date d'inscription
jeudi 13 mars 2008
Statut
Membre
Dernière intervention
13 octobre 2008

Merci beaucoup Huberdine, ça marche NIKEL !!!

et un grand merci à Codessources.com
Messages postés
158
Date d'inscription
samedi 8 février 2003
Statut
Membre
Dernière intervention
17 juin 2010

Je t'en prie.
N'oublies pas de marquer le sujet comme résolu ;-)
Bon courage pour la suite.
Messages postés
22
Date d'inscription
jeudi 13 mars 2008
Statut
Membre
Dernière intervention
13 octobre 2008

Je veux bien mais comment fait-on ?
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
Messages postés
158
Date d'inscription
samedi 8 février 2003
Statut
Membre
Dernière intervention
17 juin 2010

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.