Je viens de faire un code qui me permet de récupérer dans un tableau tous les fichiers d’un répertoire.
J’aimerai avoir dans ce tableau une seconde colonne qui me donne la date de création (ou de modification) du fichier. Voilà ce que j’ai fait :
<?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($ext_fichier != 'php' and $ext_fichier != 'html') { //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
foreach($fichier as $value) {
echo '<tr>
<td><p align="center"><a href="'.rawurlencode($repertoire).'/'.rawurlencode(str_replace ('/', '', $value)).'">'.$value.'</a></p></td>
<td><p align="center">'.date ("d/m/Y", filemtime($file)).'</p></td>
</tr>';
}
}
//exemple d'utilisation :
listing('winter'); //chemin du dossier
?>
Mais ça ne me donne pas la bonne date (01/01/1970 pour tous les fichiers).
Je pense que ça déconne au niveau de mon filemtime($file), $file ne devant pas être la bonne variable, mais je ne sais pas quoi mettre…
Merci de votre aide.
PS : Est-il possible de récupérer le nom de fichier de cette page PHP, à savoir que cette je voudrais, dans la page page3.php pouvoir récupérer le nom page3 en variable ?
Malheureusement, ce n’est pas ça. Si je mets $value, j’ai ces erreurs :
Warning: filemtime() [function.filemtime]: Stat failed for Copie (2) de Factures WINTER.xls (errno=2 - No such file or directory) in /home.3/zerobug/www/gestion/winter.php3 on line 73
Idem en ce qui concerne le nom de page, si je mets listing($_SERVER[‘SCRIPT_NAME’]); ou listing($_SERVER[‘SCRIPT_FILENAME’]); le script ne fonctionne plus.
Edité le 29/09/2007 à 00:28
Ah ben non, ça ne me donne pas les bonnes dates. Ca me donne les dates d’aujourd’hui…mais ça marche sur d’autres dossiers, pour des fichiers images par exemple.
Par contre, pour adapter le reste…ch’ui toujours une brêle !
En fait, il me faudrait :
$_SERVER[‘SCRIPT_NAME’] est de la forme /fichier.php mais en supprimant / et .php !
Edité le 29/09/2007 à 00:38
Bon apparemment, pas de solution. Il me met toujours la date à laquelle j’ai envoyé le fichier sur le serveur.
Idem pour le nom de fichier. Je pense que ce script ne supporte pas cette fonction.
Non, ça ne fonctionne pas.
J’ai donc mis la fonction $nomscript=substr($_SERVER[‘SCRIPT_NAME’],1,-4); .
Quand j’appelle le listing, au lieu d’avoir listing(‘winter’); (winter étant le dossier à analyser), je mets listing(’.$nomscript’);
Bah heu… $nomscript contenant un nom de fichier, je ne vois pas l’intérêt d’appeler listing() dessus vu que c’est une fonction qui ne fait rien du tout si is_dir($nomscript) == false :neutre:
<?php
//Guillaume ROBERT pour le site Zerobug
//http://www.zerobug.fr
//Script permettant de lister tous les fichiers PDF d'un répertoire
//dans un tableau et créant automatiquement des liens de
//téléchargement. Le fichier PDF ne s'ouvre donc pas par défaut
//dans le navigateur mais l'utilisateur aura le choix entre l'ouvrir
//et le télécharger sur son disque dur
function listing($dir)
{
$pdf_files = array();
$path_parts = pathinfo(__FILE__);
$dh = opendir($dir);
while (false !== ($filename = readdir($dh)))
{
if(strtolower(strrchr($filename, '.')) == '.pdf')
$pdf_files[] = $filename;
}
rsort($pdf_files);
foreach($pdf_files as $pdf_file)
{
/* à partir de là, on créé le lien forçant le
//téléchargement du fichier PDF
//Pour cela, il vous faudra créer dans chaque répertoire à lister
//un fichier php (ici nommé down.php) composé comme ceci :
//<?
//header("Content-type: application/pdf");
//header("Content-Disposition: attachment; filename=$pdf");
//readfile($pdf);
//?> */
echo ;
echo '<tr>
<td><p align="center"><a href="'.rawurlencode($dir).'/down.php?pdf='.rawurlencode(str_replace ('/', '', $pdf_file)).'">'.$pdf_file.'</a></p></td>
<td><p align="center">'.date ("d/m/Y", filectime($dir."/".$pdf_file)).'</p></td>
</tr>';
}
}
//exemple d'utilisation :
listing('winter'); //chemin du dossier
?>