Précédent   Forum du club des développeurs et IT Pro > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 25/02/2010, 12h04   #1
oOBaalberithOo
Futur Membre du Club
 
Inscription : octobre 2007
Messages : 72
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 72
Points : 16
Points : 16
Par défaut Récupèrer le nom du fichier le plus récent dans un dossier

Bonjour,

Voilà j'aimerais pouvoir récupèrer dans une variable le nom du fichier le plus récent dans un répertoire sachant que je list déjà mes fichier par ce code:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 
<?php
            $dir_nom = 'xml/Eqt/05103'; // dossier listé (pour lister le répertoir courant : $dir_nom = '.'  --> 
 
 
            $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
 
            while($element = readdir($dir)) {
                if($element != '.' && $element != '..' && strrchr($element,'.') != '.php') {
                    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 "\t\t<ul>\n";
                    foreach($fichier as $lien) {
                        echo "\t\t\t<li><a href=\"$dir_nom/$lien \">$lien</a></li>\n";
                    }
                echo "\t\t</ul>";
             }
            ?>
ce qui m'affiche cette liste de fichiers

EQ_05103_303_20100214_091456_10.PR.xml
EQ_05103_303_20100217_103225_10.PR.xml
EQ_05103_303_20100225_104012_10.PR.xml

si ça peut aider ce que j'ai mis en rouge c'est date_heure, sachant que les fichiers se présentent tous dans ce format, seule la date et l'heure change.

Dans le cas présent il ma faudrait donc que ma variable soit egal à "EQ_05103_303_20100225_104012_10.PR.xml"

merci de votre aide
oOBaalberithOo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2010, 13h45   #2
RunCodePhp
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 965
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 965
Points : 3 671
Points : 3 671
Salut

Je sent que certain vont pourvoir sortir un regex pile poil, mais ceci n'est pas ma tasse de thé si on peu dire.

Du coup, et comme les noms sont tous formatés de la même manière, alors un explode() devrait faire l'affaire, suivie d'un sort().

Théoriquement ceci devrait fonctionner :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
while (... blablabla...) {
	if (!is_dir($dir_nom.'/'.$element)) {
		$fichier[] = $element;
		$date = explode('_', $element);
		$date_fichier[] = $date[3].$date[4];
	}
}
//
if(!empty($fichier) && !empty($date_fichier)) {
	sort($date_fichier, SORT_REGULAR); // Du plus petit au plus grand
	$recent = $fichiers[(count($date_fichier) -1)];// Le plus grand = le plus récent
}
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2010, 14h17   #3
RunCodePhp
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 965
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 965
Points : 3 671
Points : 3 671
Re

En faite, c'est pas bon

Peut être ceci :
Code :
1
2
3
4
5
6
 
if(!empty($fichier) && !empty($date_fichier)) {
	arsort($date_fichier, SORT_REGULAR); // Tries du plus grand au plus petit
	reset($date_fichier); // On place le pointeur au début
	$recent = $fichiers[key($date_fichier)];
}
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2010, 14h26   #4
oOBaalberithOo
Futur Membre du Club
 
Inscription : octobre 2007
Messages : 72
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 72
Points : 16
Points : 16
RunCodePhp ça marche parfaitement !

Merci beaucoup de ton aide !
oOBaalberithOo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 03h59.


 
 
 
 
Partenaires

Hébergement Web