Lister contenue d'un répertoire

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

  1. Nico_ Messages postés 1220 Date d'inscription   Statut Membre Dernière intervention   189
     
    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
    1. Utilisateur anonyme
       
      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
  2. Nico_ Messages postés 1220 Date d'inscription   Statut Membre Dernière intervention   189
     
    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
  3. roy
     
    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
    1. Nico_ Messages postés 1220 Date d'inscription   Statut Membre Dernière intervention   189
       
      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
    2. roy
       
      merci ca marche très bien mais j'aimerais lister aussi les sous-répertoires stp ?

      merci d'avance
      0