Lister contenue d'un répertoire

Fermé
roy - 17 déc. 2010 à 16:22
 roy - 23 févr. 2011 à 13:16
Bonjour,

j'aimerais lister le contenue d'un répertoire et que les noms des fichiers listés soit un lien vers les fichiers

merci d'avance

3 réponses

Nico_ Messages postés 1219 Date d'inscription vendredi 29 décembre 2006 Statut Membre Dernière intervention 15 mars 2016 189
29 déc. 2010 à 14:13
Voici le code mis a jours:

Présentation sous forme de tableau:
Nom | Type | Date modification | Taille

Extension des fichiers que l'on autorise
Le code actuel liste le contenu du dossier dans le quel il est.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="TITLE" content="lister un dossier" />		
<meta name="LANGUAGE" content="FR" />

	<style type="text/css">
           /** Tables **/
		table {
			background: #fff;
			border-right:0;
			clear: both;
			color: #333;
			margin-bottom: 10px;
			width: 100%;
		}
		th {
			border:0;
			border-bottom:2px solid #555;
			text-align: left;
			padding:4px;
		}
		th a {
			display: block;
			padding: 2px 4px;
			text-decoration: none;
		}
		th a.asc:after {
			content: ' ?';
		}
		th a.desc:after {
			content: ' ?';
		}
		table tr td {
			background: #fff;
			padding: 6px;
			text-align: left;
			vertical-align: top;
			border-bottom:1px solid #ddd;
		}
		table tr:nth-child(2n) td {
			background: #f5f5f5;
		}
		table .altrow td {
			background: #f5f5f5;
		}
    </style>

</head>

<body>
<h2> Liste des fichiers </h2>

<table>
 
  <tr>
 <th> Nom </th>
 <th> Type </th>
 <th> Date modification </th>
 <th> Taille </th>
 <th>  </th>
  </tr>
  
 

	<?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($fichier))
			{
				sort($fichier);// pour le tri croissant, rsort() pour le tri décroissant
							
					foreach($fichier as $lien) 
						{
					
							//les je met les extentions que je veux voir sur la page
							$link = '/'.$dir_nom.'/'.$lien;	
							$filename = $dir_nom.'/'.$lien ;
							$lecture_adresse = pathinfo($link);	
							$name = $lecture_adresse['filename'];
							
							$extensiondufichier = $lecture_adresse['extension'];
							$extensions_autorisees = array('pdf', 'PDF', 'xls', 'XLS', 'xlsx', 'XLSX', 'doc', 'DOC', 'docx', 'DOCX','rtf','RTF', 'php');
							
							if (in_array($extensiondufichier, $extensions_autorisees))
								{
									$taille = round(filesize("$dir_nom/$lien")/1024,2); // tail en KO
										if ($taille == 1024 ) { $taille = '1 Mo' ; } 
										else if ($taille > 1024 ) { $taille = round($taille/1024,2) .' Mo' ; } 
										else if ($taille < 1024 ) {$taille = $taille .' Ko' ; } 
									
									clearstatcache();
									echo '	<tr>
											<td> '. $name .' </td>
											<td> '. $lecture_adresse['extension'] .' </td>
											<td> '. date ("D m Y H:i:s.", filemtime($filename)) .' </td>
											<td> '. $taille .'  </td>
											<td> <a href='. $link.'>ouvrir</a> </td>
											</tr> ' 
										;
								}
						}
		
			}
	?>
	</table>
</body>
</html>

1
juste ce que je chercher !!!
super le code merci a vous!
des que j'ai un peu de temps j'essayerais d'apporter une pierre à l'édifice!!!!
0
Nico_ Messages postés 1219 Date d'inscription vendredi 29 décembre 2006 Statut Membre Dernière intervention 15 mars 2016 189
18 déc. 2010 à 09:36
bonjour,
le code suivant le fait:
-> Il faut renseigner les extensions que l'on autorise ! (ligne 32 du code si joint)
<?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($fichier)){
	sort($fichier);// pour le tri croissant, rsort() pour le tri décroissant
	
	echo '<h2>Liste des fichiers</h2> <p>';
	//echo $dir_nom;
	echo "\n\n";
	
		foreach($fichier as $lien) {
		
		//les je met les extentions que je veux voir sur la page
		$link = '/'.$dir_nom.'/'.$lien;	
		$lecture_adresse = pathinfo($link);	
		$name = $lecture_adresse['filename'];
		
	$extensiondufichier = $lecture_adresse['extension'];
	$extensions_autorisees = array('pdf', 'PDF', 'xls', 'XLS', 'xlsx', 'XLSX', 'doc', 'DOC', 'docx', 'DOCX','rtf','RTF');
	 if (in_array($extensiondufichier, $extensions_autorisees))
	 {
		$taille = round(filesize("$dir_nom/$lien")/1024,2);
			echo "Cliquer sur : <a href=\"$dir_nom/$lien\">$name</a> ($taille Ko) pour l'ouvrir ou le télécharger <br />";
		}}
echo "</p>";
 }
?>


Bonne journée
0
merci beacoup mais je ne vois pas où mettre le chrmin vers le répertoire à lister

peut-on aussi afficher la date de modification et la taille des fichiers
merci encore

bonne journée
0
Nico_ Messages postés 1219 Date d'inscription vendredi 29 décembre 2006 Statut Membre Dernière intervention 15 mars 2016 189
25 déc. 2010 à 12:21
bonjour,

pour ce qui est de l'adresse du répertoire a lister c'est la ligne 2
$dir_nom = '.'; // dossier listé (pour lister le répertoir courant : $dir_nom = '.'  --> ('point')

Le code donner si dessus liste le répertoire ou est placer le code
ex: vous placer le code dans le dossier "my_documents" sur le fichier index.php, il listera tout le contenu du dossier "my_documents", si l'extension fait partie de la liste ds extensions autorisées.

Je regarde pour ce qui est de la date de modification
La taille du fichier est indiquer en Ko. je peux coder une fonction pour la mettre en Mo si besoin.

Joyeux Noël!
0
merci ca marche très bien mais j'aimerais lister aussi les sous-répertoires stp ?

merci d'avance
0