Rechercher : dans
Par :

Afficher le contenu d'un repertoire en PHP

Dernière réponse le 3 nov 2009 à 14:57:24 Fayçal, le 15 nov 2005 à 13:51:21 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « afficher le contenu d'un repertoire en PHP » dans :
[Webmaster] Afficher facilement le code php/xhtml de vos pages Voir Si vous voulez proposer a vos visiteurs de voir la source de vos fichiers (PHP ou HTML), il y a plusieurs solutions. En php Afficher le code php Afficher le code html En html Informations Voir aussi En php Afficher le code php La...
[PHP] Lister le contenu d'un répertoire VoirGrâce à PHP, il est possible d'afficher le contenu d'un répertoire et de ses sous-répertoires. Voici ci-dessous une fonction permettant de parcourir récursivement les répertoires et sous-répertoires et d'en afficher les fichiers : function...
[MS-Dos] Lister le contenu d'un répertoire dans un fichier VoirIl peut s'avérer pratique d'effectuer le listage d'un ou plusieurs répertoires dans un fichier, afin de tenir par exemple un catalogue de fichiers. Sous MS-Dos (ou sous Windows en ouvrant une fenêtre d'invite de commande MS-Dos) il est possible...
Commandes Linux VoirTableau des principales commandes Linux Commande Description équivalent DOS ls liste le contenu d'un répertoire dir cd change de répertoire cd cd .. répertoire parent cd.. mkdir crée un nouveau...
PHP - Affichage de texte sur le navigateur VoirLe but de PHP est de permettre la création de pages web dynamiques, ainsi son but premier est de pouvoir envoyer des données au navigateur. Les trois fonctions standards PHP fournit 3 fonctions permettant d'envoyer du texte au navigateur. Ces...
PHP - Les fichiers VoirLa gestion des fichiers avec PHP Avec PHP, la création ou la lecture de fichiers est, une fois de plus, assez simple. Il existe une multitude de fonctions dédiées à l'utilisation des fichiers. La communication entre le script PHP et le fichier...

1

wiwimagique, le 15 nov 2005 à 14:06:15

Voilà la solution

http://fr.php.net/manual/fr/function.readdir.php
Dans sa voiture rouge et jaune

Répondre à wiwimagique

2

Musa Stephen HONLUE, le 8 mai 2007 à 05:37:45
  • +2

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!!!

Répondre à Musa Stephen HONLUE

3

damien, le 30 jui 2007 à 15:10:58

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

Répondre à damien

4

gryzzly, le 30 jui 2007 à 17:58:26
  • +16

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>";
 }
?>
Deux choses sont infinies : l'Univers et la bêtise humaine.
Mais en ce qui concerne l'Univers, je n'en ai pas encore acquis la certitude absolue. A. Einstein

Répondre à gryzzly

5

damien, le 6 aoû 2007 à 15:10:40

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

Répondre à damien

9

someone, le 15 jan 2008 à 19:28:53

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.

Répondre à someone

17

bonumide, le 12 mai 2008 à 09:59:11
  • +1

Bonjour,
As tu trouvez comment mettre le filtre pour les fichiers php?
Merci

Répondre à bonumide

18

bonumide, le 12 mai 2008 à 10:39:46
  • +1

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>";
 }
?>

Répondre à bonumide

24

Patoche, le 21 sep 2008 à 12:52:34

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

Répondre à Patoche

11

nayon, le 19 mar 2008 à 13:53:33

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

Répondre à nayon

12

gryzzly, le 19 mar 2008 à 19:12:22

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 ! J'ai toujours aimé le désert. On s'assoit sur une dune de sable. On ne voit rien. On n'entend rien. Et cependant quelque chose rayonne en silence...
[A.S-E.]

Répondre à gryzzly

13

nayon, le 25 mar 2008 à 14:25:57

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

Répondre à nayon

6

boubaka, le 31 oct 2007 à 22:59:37
  • +2

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+

Répondre à boubaka

7

christophedortel, le 30 déc 2007 à 20:11:01

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

Répondre à christophedortel

8

sonik21, le 31 déc 2007 à 15:11:03

Salut,
il est trop canon ton script gryzzli !!!
jen avais besoin mai je ne trouvai pas
il est vraiment super !!!


http://mvhbooster.ifrance.com

Répondre à sonik21

10

scud, le 7 fév 2008 à 10:59:54

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

Répondre à scud

14

asas, le 7 avr 2008 à 14:46:11

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.

Répondre à asas

15

Yannick, le 7 avr 2008 à 23:04:49

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

Répondre à Yannick

16

ocb, le 13 avr 2008 à 19:45:08
  • +1

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>";
}
}

Répondre à ocb

19

zazouz100, le 5 jui 2008 à 23:15:51

Il y a un truck que je comprend pas ces codes sont surement juste mais moi sa ne marche pas!
j'ai essayé avec le bock note et ouvert avec Mozilla firefox mais sa ne marche pas.

Répondre à zazouz100

20

sonik21, le 10 jui 2008 à 02:03:57

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).

Répondre à sonik21

21

zazouz100, le 10 jui 2008 à 10:17:54

Ok merci de ta reponce!

Répondre à zazouz100

22

sonik21, le 11 jui 2008 à 21:13:10

Derien :p

Répondre à sonik21

23

trocoolyeah, le 26 aoû 2008 à 12:19:26

Super merci gryzzly je cherche depuis quelque jour quelques chose pour faire sa et c'est exactement ce qu'il me falais trop bon ^^

Répondre à trocoolyeah

26

perplexe, le 3 nov 2008 à 18:22:42
  • +3

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/

Répondre à perplexe

27

omer, le 3 avr 2009 à 15:49:06

Comment afficher l'arborescence d'un site web.

Répondre à omer

28

Eclipse, le 25 oct 2009 à 00:10:07

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

Répondre à Eclipse

29

Linblow, le 3 nov 2009 à 09:34:40

Tu fais une simple condition dans la boucle while qui parcoure le dossier :

if ( $file != 'index.php' )
{
...
}

Répondre à Linblow

30

 Eclipse, le 3 nov 2009 à 14:57:24

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

Répondre à Eclipse