Dernier dossier créé

Résolu
cs_maximev Messages postés 67 Date d'inscription lundi 20 décembre 2004 Statut Membre Dernière intervention 27 décembre 2010 - 18 sept. 2005 à 14:46
cs_maximev Messages postés 67 Date d'inscription lundi 20 décembre 2004 Statut Membre Dernière intervention 27 décembre 2010 - 18 sept. 2005 à 17:05
Bonjour,

Est-il possible de lire une liste de dossiers et de choisir parmis ceux-ci le plus récent de tous?

Personnellement, je ne vois pas trop comment faire.

Merci beaucoup pour votre aide

8 réponses

J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 9
18 sept. 2005 à 16:52
 Adaptation de l'exemple avec listing des sous-dossiers...:



<?php
 $dir = "/tmp/php5";
 $le_plus_recent = "";

$temp = 0;


 // Ouvre un dossier bien connu, et liste tous les fichiers
 if (is_dir($dir)) {
     if ($dh = opendir($dir)) {
         while (($file = readdir($dh)) !== false and is_dir($file)) {

            $t = filemtime($file);

            if($temp<$t) {

                $temp = $t;

                $le_plus_recent = $file;

            }           
         }
         closedir($dh);
     }
 }
 ?>





  
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 9
18 sept. 2005 à 14:56
La fonction PHP stat te donne toutes les statistique de ton
fichier/dossier... y compris la date de création, date d'acces, date de
modif, etc... (format TIMESTAMP)



Tu prend le plus récent (TIMESTAMP le plus grand)
cs_maximev Messages postés 67 Date d'inscription lundi 20 décembre 2004 Statut Membre Dernière intervention 27 décembre 2010
18 sept. 2005 à 15:52
Et plus concrètement, ça donnerait quoi?

Merci
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 9
18 sept. 2005 à 16:15
acceder_le);Concret ? C'est parti...



$dossiers = array("c:/windows/","d:/pouet/temp/truc/ici/","f:/lecteur/non/accessible/");



// ce tableau contiendra la date d'acecs de chacun de tes dossiers

$acceder_le = array(); //on par du vide et on le rempli



// pour chaque dossier de ta liste

foreach($dossier as $value) {

// on récupère les stat du dossier placée dans $t variable temporraire

$t = stat($value);

// on construit le tableau, mtime est la date de dernière modification

// va voir ici : http://fr.php.net/manual/fr/function.stat.php

$acceder_le[$value] = $t['mtime'];

}



// Ca, c'est fait!

// maintenant tu ordonne le tableau pour que le premier élément soit le plus récent

// http://fr.php.net/manual/fr/function.arsort.php

arsort($acceder_le);



// Puis on prend la première valeur (le plus récent)

reset($acceder_le); // revenir au début du tableau, c'est mieus

list($nom,$date_derniere_modification) = each($acceder_le); // chope le premier element

// unset($acceder_le); pour gagner de la place en mémoire







Voilà !

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_maximev Messages postés 67 Date d'inscription lundi 20 décembre 2004 Statut Membre Dernière intervention 27 décembre 2010
18 sept. 2005 à 16:19
Génial. Merci.

J'aiencore un soucis avec ce script: la liste des dossiers varie sans arrêt. Il n'y a pas une extension possible afin de ne pas devoir entrer les valeurs des dossiers?
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 9
18 sept. 2005 à 16:27
A partir de quoi va être construite cette liste de dossiers???



Je suis parti du principe que cette liste était dispo dans un tableau,
mais il aurait été aussi simple de lister un dossier pour comparer la
date de ses sous-dossier..



cf :

http://fr.php.net/manual/fr/function.opendir.php

http://fr.php.net/manual/fr/function.is-dir.php



exemple :


<?php

$dir = "/tmp/php5";



// Ouvre un dossier bien connu, et liste tous les fichiers

if (is_dir($dir)) {

    if ($dh = opendir($dir)) {

        while (($file = readdir($dh)) !== false) {

            echo "fichier : $file : type : " . filetype($dir . $file) . "\n";

        }

        closedir($dh);

    }

}

?>

J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 9
18 sept. 2005 à 16:49
STOP !!!!!



J'ai fait le con il y'a encore plus simple...





$dossiers = array(...); // la fameuse liste

$le_plus_recent = ''; // le no du plus récent atterrira ici!

$temp = 0; // vairaible pour comparer les date de dernière modif



// on paluche la liste et on se souvient du plus recent trouvé jusqu'ici!

foreach($dossiers as $nom){

if( $temp < filemtime($nom) {

$le_plus_recent = $nom;

$temp = filemtime($nom);

}

}



Et tu récupère le plus récent ... ;)

15 fois plus simple et certainement 1000 fois plus rapide !!!
cs_maximev Messages postés 67 Date d'inscription lundi 20 décembre 2004 Statut Membre Dernière intervention 27 décembre 2010
18 sept. 2005 à 17:05
Merci
Rejoignez-nous