juin
2007
1. Le problème :
Nous avons un répertoire contenant plusieurs fichiers, nous voulons les afficher en faisant un tri sur la taille, la date de création etc.
2. Marche à suivre :
- récupérer les fichiers du répertoire.
- les mettre dans un tableau multidimensionnel.
- trier notre tableau.
En décomposant la tache en plusieurs parties, on s’aperçoit que ce n’est pas si compliqué que ça, et pourtant ça semblait difficile :)
allez, on se lance :
1./2. lecture des fichiers, mise en tableau :
$rep = "NOTRE/REPERTOIRE/";
$dir = opendir($rep);
while ($f = readdir($dir)){
if(is_file($rep.$f)){
$sizeMo = filesize($rep.$f) / 1024 / 1024; //la taille du fichier en Mo
$liste1[] = "$f"; //le nom du fichier
$liste1[] = number_format($sizeMo, 2, ",", " "); //la taille en format 7,66
$liste1[] = df(filectime($rep.$f)); //la date de création au format FR (voir df() plus bas)
$liste1[] = filectime($rep.$f);//la date de création au format timestamp (nous servira pour le tri)
$liste[] = $liste1; //on met notre tableau liste1 dans un autre tableau (le gros multidimensionnel)
}
}
function df($date) {//pour convertir une date au format FR
return date("d/m/Y H:i:s",$date);
}
après cette opération le résultat pourrait ressembler à ça :
fichier1 10 01/05/2007 0123654747899 (exemple du timestamp) fichier2 20 01/05/2007 0123654747899 fichier3 15 11/14/2006 0123654747899 fichier7 10 21/08/2007 0123654747899 fichier6 150 01/05/2005 0123654747899 etc.
3. tri de notre tableau :
foreach ($liste as $key =>$row) {
$nom[$key] = $row[0];//c'est la colonne des nom de fichiers$taille[$key] = $row[1];//des tailles
$date1[$key] = $row[2];//des dates fr
$date2[$key] = $row[3];//des dates
}
array_multisort($date2, SORT_DESC, $nom, SORT_ASC, $liste);//la fonction de tri
et voilà, notre tableau est trié par date de création dans notre cas, on peut maintenant le parcourir et l’afficher comme on veut.
bons tests :)
Pour en discuter : http://forum.naeh.net/index.php?topic=33.0
Catégories : PHP / MySQL | Pas de commentaires
