Rejoignez
la communauté
Inscrivez-vous
Posez votre question Signaler

Afficher le contenu d'un repertoire en PHP [Résolu]

Fayçal - Dernière réponse le 1 avril 2013 à 21:40
je veux afficher une liste des fichiers d'un repertoires en utilisant PHP, par exemple, sur mon site , j'ai un repertoire mp3 qui contient des mp3, je veux qu'une page "list.php" affiche le contenu de ce repertoire, merçi

si vous avez un autre astuce plus simple ça serait mieux, merçi
Lire la suite 
47 réponses
Réponse
+98
moins plus
tiens, regarde si ca te conviens, j'ai fait ca y'a quelques semaines sur ccm, je retrouve plus la version in line... mais tu auras pas de difficultés à le tester et a le mettre à ta guise :

<?php
$dir_nom = '.'; // dossier listé (pour lister le répertoir courant : $dir_nom = '.'  --> ('point')
$dir = opendir($dir_nom) or die('Erreur de listage : le répertoire n\'existe pas'); // on ouvre le contenu du dossier courant
$fichier= array(); // on déclare le tableau contenant le nom des fichiers
$dossier= array(); // on déclare le tableau contenant le nom des dossiers

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

closedir($dir);

if(!empty($dossier)) {
	sort($dossier); // pour le tri croissant, rsort() pour le tri décroissant
	echo "Liste des dossiers accessibles dans '$dir_nom' : \n\n";
	echo "\t\t<ul>\n";
		foreach($dossier as $lien){
			echo "\t\t\t<li><a href=\"$dir_nom/$lien \">$lien</a></li>\n";
		}
	echo "\t\t</ul>";
}

if(!empty($fichier)){
	sort($fichier);// pour le tri croissant, rsort() pour le tri décroissant
	echo "Liste des fichiers/documents accessibles dans '$dir_nom' : \n\n";
	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>";
 }
?>
damien - 6 août 2007 à 15:10
bonjour,

merci pour ce bout de script, il correspond bien à ce que je recherchais!

parcontre je n'arrive pas à voir comment je pourrait ensuite faire pour supprimer un où plusieurs des fichiers parmis la liste..

avec une case à cocher qui renseigne une fonction ulink mais bon... j'ai pas trop d'idée là...

si qqun à un tuyau c cool.

Merci encore pour la réponse.

bye
someone - 15 janv. 2008 à 19:28
ton code ma bcp servis mais j'ai eu du mal a rajoute une optien pour filré les fichier : commme php ou autre en premier j'utilise ce code :
 <?php
    
     function listing($repertoire){
   
     $fichier = array();
    
     if (is_dir($repertoire)){
    
     $dir = opendir($repertoire); //ouvre le repertoire courant désigné par la variable
     while(false!==($file = readdir($dir))){ //on lit tout et on récupere tout les fichiers dans $file
   
     if(!in_array($file, array('.','..'))){ //on eleve le parent et le courant '. et ..'
    
     $page = $file; //sort l'extension du fichier
     $page = explode('.', $page);
     $nb = count($page);
     $nom_fichier = $page[0];
     for ($i = 1; $i < $nb-1; $i++){
     $nom_fichier .= '.'.$page[$i];
     }
     if(isset($page[1])){
    $ext_fichier = $page[$nb-1];
    if(!is_file($file)) { $file = ''.$file; }
    
	 }
     else 
	 {
    if(!is_file($file)) { $file = ''.$file; } //on rajoute un "/" devant les dossier pour qu'ils soient triés au début
	
	
	
     $ext_fichier = '';
	
     }
    
     if($ext_fichier != 'php3' and $ext_fichier != 'db' ) { //utile pour exclure certains types de fichiers à ne pas lister
     array_push($fichier, $file);
     }
    }
     }
     }
    

	
     natcasesort($fichier); //la fonction natcasesort( ) est la fonction de tri standard sauf qu'elle ignore la casse
     // et la date du téléchargement

      
    foreach($fichier as $value) {

	
     echo '    <a href="'.rawurlencode($repertoire).'/'.rawurlencode(str_replace ('/', '', $value)).'"  target=\"_blank\">'.$value.'</a> <br />';
	



     }
    
     }
    
     //exemple d'utilisation :
   
     listing('admin/UPLOAD/emploi/upload'); //chemin du dossier

   ?> 

exp
il marché tres bien localement mais une fois que j'ai mis le site sur le serveur j'ai eu des probleme de lien voici donc ce qu'il me donne exp : The requested URL /admin/UPLOAD/emploi/upload/emploi du temsp.pdf was not found on this server.

puis j'ai adopter le tien et les liens marche trés bien apart que cette fois ci il affiche aussi le liens des page web.
bonumide - 12 mai 2008 à 09:59
Bonjour,
As tu trouvez comment mettre le filtre pour les fichiers php?
Merci
bonumidesomeone - 12 mai 2008 à 10:39
En fait j'ai fini par trouver
il faut utiliser la fonction
strrchr
.
l'excellent code de notre ami marche à merveille
<?php
$dir_nom = '.'; // dossier listé (pour lister le répertoir courant : $dir_nom = '.'  --> 

('point')
$dir = opendir($dir_nom) or die('Erreur de listage : le répertoire n\'existe pas'); // on 

ouvre le contenu du dossier courant
$fichier= array(); // on déclare le tableau contenant le nom des fichiers
$dossier= array(); // on déclare le tableau contenant le nom des dossiers

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

closedir($dir);

if(!empty($dossier)) {
	sort($dossier); // pour le tri croissant, rsort() pour le tri décroissant
	echo "Liste des dossiers accessibles dans '$dir_nom' : \n\n";
	echo "\t\t<ul>\n";
		foreach($dossier as $lien){
			echo "\t\t\t<li><a href=\"$dir_nom/$lien \">$lien</a></li>\n";
		}
	echo "\t\t</ul>";
}

if(!empty($fichier)){
	sort($fichier);// pour le tri croissant, rsort() pour le tri décroissant
	
	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>";
 }
?>
Patoche - 21 sept. 2008 à 12:52
Bonjour,
Ca marche nickel, merci.
Mon répertoire à ouvrir ((dans : "listing" est rempli de répertoires.... une vrai arborescence. Comment gérer cette arborescence via le script et dans la même fenêtre. Comme l'explorateur windows, mais j'insiste, dans la même fenêtre de mon navigateur

Par exemple :
Je clic sur Dossier 2 cela m'ouvre l'arborescence du dossier 2
Je clic sur sous dossier 2 cela m'ouvre l'arborescence du sous dossier 2

Chaque arborescence s'ouvrant seule à l'écran avec la ligne : "Remonter d'un niveau" en haut pour se balader dans l'arborescence général du dossier de baser.

C'est compliqué ça !!!!

dossier racine
--------------sous dossier 1
--------------sous dossier 2
----------------------- sous sous dossier 2
--------------sous dossier 3
--------------sous dossier 4
.

Merci
nayon - 19 mars 2008 à 13:53
bonjour a tous,

voilà je sais que ce topic est vieux de 9 mois, mais voilà je ne comprend pas entièrement la script de gryzzly pour lister
le contenu d'un repertoire.

Pourquoi a t on besoin de tester si $exemple = '.' et '..'

voilà

merci d'avance pour vos reponses
gryzzly 4648Messages postés lundi 7 novembre 2005Date d'inscription ContributeurStatut 18 septembre 2012Dernière intervention - 19 mars 2008 à 19:12
parce que fais le test, sans tester ces deux éléments. Tu verras que c'est très moche ! Tu n'a pas besoin d'afficher dans le listing le dossier ou tu es (.) ni le dossier supérieur (..) (a moins que dans ton cas tu ne cherches justement à les afficher mais je ne vois pas l'intéret d'afficher à l'écran un . et deux ..)

Suis je clair ? Fais le test, ce sera bcp plus parlant !
nayon - 25 mars 2008 à 14:25
slt, désolé de répondre tardivement

En faite j'avais mal posé mal question et j'avais testé l'affichage sans enlever le . et le ..
Je voulais savoir à quoi ils servaient, en tout cas maintenant je sais grâce à toi que cela sert à se balader dans l'arborescence.

Merci pour tout

Tchao
fahd - 5 mars 2011 à 17:55
il ne fonctionne po b1 ce code
bigbybob - 23 juin 2011 à 13:06
Si tu code aussi bien que t'écris ça risque pas de fonctionner ^^
o_O - 22 juil. 2011 à 09:50
Si tu codes*
xtian7 - 10 août 2011 à 11:56
hahhahhahahahahahahaaaaaaaaaaaaaaa sinon je prend quand même.
Tay - 23 août 2011 à 14:27
J'avoue :D => Que des fautes dans le messages, aucune fautes dans les commentaires de code xD
Utilisateur anonyme - 31 déc. 2011 à 07:23
Alors là, bravo ! Ca marche nickel !
grug - 3 mai 2012 à 16:32
aucune faute sans s à la fin vu qu'il y a 0 faute !
syl - 14 juil. 2012 à 16:49
Super scripte. A copier/coller tel quel !
Etorion - 15 janv. 2013 à 13:26
Merci pour le script
Ajouter un commentaire
Réponse
+9
moins plus
teste ce bout de code

<?php
$dir = opendir("le_chemin_vers_ton_repertoire");
while($file = readdir($dir)) {
echo "$file\n";
}
closedir($dir);
?>
------------------------------------------------
(HMS) la réussite ne s'improvise pas!!!
damien - 30 juil. 2007 à 15:10
bonjour, je viens d'utiliser ce bout de code sur un des mes sites et çà fonctionne bien mais je rencontre un pb pour l'affichage du résultats:

je voudrais savoir comment faire pour que les noms de fichiers apparaissent en colonne plutôt que les un à la suite des autres à l'horizontale.

avez vous une idée ?

merci d'avance
bbk - 29 juin 2010 à 00:58
(pour ceux qui cherche : )
faut ajouter un <br /> de sorte à faire :

<?php
$dir = opendir("le_chemin_vers_ton_repertoire");
while($file = readdir($dir)) {
echo "$file <br />\n"; /* le <br /> donne un retour à ligne pour le html; et le \n donne une retour à la ligne dans le code source */
}
closedir($dir);
?>
une autre option est possible :
<?php
$dir = opendir("le_chemin_vers_ton_repertoire");
echo "<pre>";
while($file = readdir($dir)) {
echo "$file\n";
}
echo "</pre>"; /* les balises <pre></pre> utilise la mise en forme du code source, le \n sert donc de <br /> sur la page html */
closedir($dir);
?>
Sizer - 13 sept. 2012 à 16:06
C'est le plus efficace !!! =)
Ajouter un commentaire
Réponse
+4
moins plus
Bonjour
je desirerais ouvrir un repertoire crée, dans une fenetre prevu a cette effet. Le probleme etant ke c tout le site qui s'affiche dans le fenetre sur internet explorer en revanche cela fonctionne tres bien sur mozilla.Pkoi et que puis je faire?


// Le répertoire a été choisi
if ( isset($_POST['gal']) )
{
if ( strtoupper($_POST['gal']) == "new" )
{
if ( isset($_POST['repertoire']) )
{
if(is_dir($relative_files_path . $_POST['repertoire']))
{
echo "<form name=\"repertoire\" method=\"post\" action=\"upload.php?gal=new\">";
echo "Ce répertoire existe déjà.<br>Merci de choisir un nouveau nom de répertoire : <br>";
echo "<input type=\"text\" name=\"repertoire\">   <input type=\"submit\" name=\"submit\" value=\"Valider\">";
echo "<input type=\"hidden\" name=\"reponse_OK\">";
echo "</form>";

echo "<form name=\"repertoire\" method=\"post\" action=\"upload.php\">";
echo "<input type=\"hidden\" name=\"reponse_OK\">";
list_dir_to_upload($relative_files_path, "répertoires");
echo "<input type=\"submit\" name=\"submit\" value=\"Valider\">";
echo "</form>";
}
else
{
mkdir($relative_files_path . supprimer_accents($_POST['repertoire']));
afficher_upload($_POST['repertoire']);
}
}
}
else
{
afficher_upload($_POST['gal']);
}
}
// Choix du répertoire
else
{
echo "Choisissez le répertoire dans lequel vous voulez déposer vos photos, ou créez un nouveau répertoire à votre nom :<br><br>";
echo "<form name=\"repertoire\" method=\"post\" action=\"upload.php\">";
echo "<input type=\"hidden\" name=\"reponse_OK\">";
echo "<input type='hidden' name='gal' value='new'>";
echo "Nouveau répertoire : <input type=\"hidden\" name=\"reponse_OK\">";
echo "<input type=\"text\" name=\"repertoire\"> <input type=\"submit\" name=\"submit\" value=\"Créer un nouveau répertoire\">";
echo "</form>";

echo "<form name=\"repertoire\" method=\"post\" action=\"upload.php\">";
echo "<input type=\"hidden\" name=\"reponse_OK\">";
list_dir_to_upload($relative_files_path, "répertoires");
echo "<input type=\"submit\" name=\"submit\" value=\"Valider\">";
echo "</form>";
}
}
Ajouter un commentaire
Réponse
+1
moins plus
Salut,
J'ai récuperer le script de gryzzly qui marche à merveille.
Mais voila, je voudrais ajouter une petite modif. Je voudrais qu'au lieu d'ouvrir le fichier en cliquant dessus, je voudrais que ça le supprime.
Pour cela j'ai modifier une ligne :

echo "\t\t\t<li><a href=\"<? unlink($dir_nom/$lien); ?> \">$lien</a></li>\n";

Mais, il me repond : You don't have permission to access /monsite/Admin/< on this server.

Ou est mon erreur ?
y'a t'il une autre solution ?

Merci
mike - 21 sept. 2010 à 04:01
CHMOD ... tu n'as pas les autorisations sur le serveur
Ajouter un commentaire
Réponse
+1
moins plus
Salut a tous,
Alors ma question est la suivante que doit-on mettre pour afficher un listing d'un dossier mais comprenant qu'un type de fichier dans mon cas des fichiers .HTML
En faite je voudrais afficher un listing mais que de fichiers html et non pas des autres fichiers présent sur ce même dossier.
Merci de votre réponse
Cordialement
Ajouter un commentaire
Réponse
+1
moins plus
bah...il faudrait peut-être que tu l'upload sur un serveur ou que tu utilise un serveur local ! windows (ou tout autre système d'exploitation je pense) ne lit pas le PHP !
si tu n'as pas de compte ftp, je te conseil de télécharger WAMP manager ( je l'utilise et il fonctionne parfaitement).
il permet de lire les PHP en étant hors-ligne. sinon, inscrit-toi sur un site qui propose un hébergement(ifrance et lycos multimania sont gratuit).
Ajouter un commentaire
Réponse
+1
moins plus
ok merci de ta reponce!
Ajouter un commentaire
Réponse
+1
moins plus
bonjour,
je vous conseille absolument jbcexplorer (http://www.jbc-explorer.info/)
qui liste n'importe qu'elle fichier contenu dans les repertoires et cela trés simplement
a+
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,

j'aimerais savoir comment on peut afficher le contenu d'un repertoire perso d'un membres

je m'explique un membre veut uploader un fichier à partir de son profil, une fois uploader cela créer un repertoire perso ok ca marche mais ce que je voudrais faire c'est que lorsque le membres veut creer un posts ou répondre à un post et celui-ci veut introduire un de ces fichiers uploader ceux-ci apparaisse automatiquement en bas de chaque nouveaux posts qu'il veut créer avec à côté du fichier une case à cocher qui enverrait du bbcode dans la zone de texte quand le fichier est séléctionner et donc quand le memebres fait envoyer le message le fichier s'introduit avec le message.
mais les fichiers faudrait qu'ils apparaissent seulement aux membres concerné par son repertoire et seulement si celui ci est connecté avec son identifiant
je ne sais pas si je me suis fait comprendre excusez moi c'est un peu long mais merci d'avance

A+
Ajouter un commentaire
Réponse
+0
moins plus
Merci pour ce script Gryzzly .
J'aimerai savoir comment ajouter à la fin des lignes du listing, la taille des fichiers .
Et si possible, en debut des lignes, une icone par extension .

Mon but etant de refaire un peu ce que l'on voit sur une page ftp que je ne peux utiliser car il y a parfois plusieurs dossiers à ouvrir pour un seul client (membre) .

Merci par avance
Ajouter un commentaire
Réponse
+0
moins plus
derien :p
Ajouter un commentaire
Réponse
+0
moins plus
super merci gryzzly je cherche depuis quelque jour quelques chose pour faire sa et c'est exactement ce qu'il me falais trop bon ^^
perplexe - 3 nov. 2008 à 18:22
et voilà de quoi répondre à toute vos questions!
Le poste est vieux, mais le lien vaut le coup!!
http://cyberzoide.developpez.com/php4/file/
Ajouter un commentaire
Réponse
+0
moins plus
comment afficher l'arborescence d'un site web.
Ajouter un commentaire
Réponse
+0
moins plus
Comment faire pour empecher de lister (par exemple) le fichier index.php ...

Eneffet, c'est bien joli de l'afficher et de le rendre clickable mais dans moncas,je suisdéjàsur l'index, je ne vais donc pas y retourner ;)

Merci de vos avis
Ajouter un commentaire
Réponse
+0
moins plus
Tu fais une simple condition dans la boucle while qui parcoure le dossier :

if ( $file != 'index.php' )
{
...
}
Eclipse - 3 nov. 2009 à 14:57
Tien j'ai fais ça finalement :p

// NE PAS AFFICHER DE INDEX.PHP = exclusion de fichiers.

if($lien == "index.php"){} else {

echo "\t\t\t<li><a href=\"$dir_nom/$lien \">$lien</a></li>\n";


} //fin du test exclusion
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,

j'ai repris à mon compte le script de Grizzly ci-dessus, mais je n'obtiens pas le fonctionnement souhaité.

Je désire scruter un répertoire partagé sur un poste de mon réseau ($dir_nom = chemin UNC de mon répertoire) , afficher le résultat dans une page web (jusque là le script fonctionne parfaitement) et télécharger les fichiers. Mais là, cela ne fonctionne pas.

En fait, il cherche à ouvrir http://chemin UNC de mon partage. Y a t'il une autre façon de faire.

Mon but est de construire un portail d'entreprise de partage de document.
Ajouter un commentaire
Réponse
+0
moins plus
je vous remercie par avance
Ajouter un commentaire
Réponse
+0
moins plus
Le plus simple c'est d'utiliser la fonction glob() :

<?php
$liste = glob('/mon/dossier/*.mp3');
foreach ($liste as $nom_fichier) {
    echo $nom_fichier."\n";
}
?>

Sinon il faut utiliser une fonction récursive, tout est expliqué dans ce tutoriel :
http://www.finalclap.com/faq/197-php-liste-fichier-dossier-recursif
Ajouter un commentaire
Réponse
-1
moins plus
voilà la solution

http://fr.php.net/manual/fr/function.readdir.php
Ajouter un commentaire
Réponse
-1
moins plus
bonjour,
j'ai un pb d'affichages d'une liste des utilisateurs , je travaille avec php , et je dois afficher la liste des utilisateurs , mais il ne m'affiche pas toute la liste.
Ajouter un commentaire
Ce document intitulé « afficher le contenu d'un repertoire en PHP » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?
Recevez notre newsletter
CCM JDN Droit-Finances Femme Linternaute Copains d'avant Santé-Médecine

Carte de voeux 2013, Cinéma, Décoration, Expeert, Horoscope, Salon littéraire, Programme TV, Cuisine (Recette), Coiffure, Restaurant, Test débit, Voyage, Hayatouki

afficher le contenu d'un repertoire en PHP - page 2