Liste de dossier en ordre avec readdir

Résolu
Xella60 Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   -  
Defouille Messages postés 388 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Une page d'intranet sur lequel je travail affiche les sauvegardes de la base de donnée, je voudrais que les sauvegardes s'affichent de la plus récente à la plus ancienne.
Or, les dossiers s'affichent dans n'importe quel ordre...

Les sauvegardes s'enregistrent sous cette forme icsmDb_07-01-2010_15h16m18s.sql

Voici le code:

<?php
include('../init.php');
echo "<h1>Gestions des sauvegardes</h1>";
echo "<div id='contenu'>";
echo "<input type='button' value='Sauvegarder la base' onClick=goDump(); style='float:right;margin:7px;'/>";
echo "<div class='caseEntete' style='margin-top:5px;padding-bottom:15px;'>Liste des sauvegardes effectuées</div>";
$dir = opendir("dump/");
$cptColor=0;
while ($file = readdir($dir)) {
if ($file!=".." && $file!="."){
$f=explode("_",$file);
$h=explode(".",$f[2]);
$cptColor++;
echo "<div style='float:right;margin:5px;'>";
echo "<input type='button' value='Restaurer' onClick=goRestaure('sauvegardes/dump/$file'); />";
echo "<input type='button' value='X' onClick=goDelSauv('sauvegardes/dump/$file'); />";
echo "</div>";
echo "<div class='case".$cptColor."Spe' style='padding-bottom:10px;'>";
echo "<strong>$f[1] à $h[0]</strong><br/>";
echo ">> <a href='sauvegardes/dump/$file' target='_blank'>$file</a>";
echo "</div>";
if($cptColor>=2){
$cptColor=0;
}
}
}

echo "</div>";
?>



A voir également:

3 réponses

Defouille Messages postés 388 Date d'inscription   Statut Membre Dernière intervention   54
 
Bonjour,

voila une solution, peut être pas la plus élégante ou la plus rapide mais je pense que ça peut te débloquer :

<?php
include('../init.php');
echo "<h1>Gestions des sauvegardes</h1>";
echo "<div id='contenu'>";
echo "<input type='button' value='Sauvegarder la base' onClick=goDump(); style='float:right;margin:7px;'/>";
echo "<div class='caseEntete' style='margin-top:5px;padding-bottom:15px;'>Liste des sauvegardes effectuées</div>";
$dir = opendir("dump/");
$cptColor=0;
// test ex : icsmDb_07-01-2010_15h16m18s.sql
// $t[] = "icsmDb_07-01-2010_16h16m18s.sql";
// $t[] = "icsmDb_06-01-2009_13h16m18s.sql";
// $t[] = "icsmDb_05-01-2010_15h16m18s.sql";
// $t[] = "icsmDb_05-01-2010_15h16m18s.sql";
$fichiers = array() ;
$temps_svg = array();
// test : foreach($t as $file)
while ($file = readdir($dir))
{
	if ($file!=".." && $file!=".")
	{
		$f=explode("_",$file);
		$h=explode(".",$f[2]);
		
		$d=explode("-",$f[1]);
		$date = $d[2]."-".$d[1]."-".$d[0] ;
		$heure = str_replace("h", ":", $h[0]);
		$heure = str_replace("m", ":", $heure);
		
		// On met dans un tableau le nom des fichiers avec en clé le timestamp
		$fichiers[strtotime($date." ".$heure)][] = $file;
		
	}
}

// On classe le tableau par clé (et donc par timestamp)
uksort($fichiers, "strnatcasecmp");

// On affiche le tableau
foreach($fichiers as $date => $fics)
{
	// Boucle supplémentaire au cas ou plusieurs sauvegardes aient la meme date
	foreach($fics as $file)
	{
		$cptColor++;
		echo "<div style='float:right;margin:5px;'>";
		echo "<input type='button' value='Restaurer' onClick=goRestaure('sauvegardes/dump/$file'); />";
		echo "<input type='button' value='X' onClick=goDelSauv('sauvegardes/dump/$file'); />";
		echo "</div>";
		echo "<div class='case".$cptColor."Spe' style='padding-bottom:10px;'>";
		echo "<strong>".date("Y-m-d h:m", $date)."</strong><br/>";
		echo ">> <a href='sauvegardes/dump/$file' target='_blank'>$file</a>";
		echo "</div>";
		if($cptColor>=2)
			$cptColor=0;
	}
}

echo "</div>";
?>
0
Xella60 Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   3
 
Merci tu as bien résolu le problème de l'ordre mais voilà ce qui est affiché:

2010-06-15 07:06
>> icsmDb_15-06-2010_07h44m12s.sql

La sauvegarde a bien été faite a 07h44 mais l'affichage de l'heure au dessus ne correspond plus :s
0
Xella60 Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   3
 
je viens de comprendre d'où viens ce problème d'heure

date("Y-m-d h:m", $date) J'ai remplacé par date("d-m-Y H:i:s", $date) et tout est Ok!!!

J'ai également ajouté la ligne $heure = str_replace("s"," ", $heure);
0
Xella60 Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   3
 
J'allais oublier, merci beaucoup pour ton aide =)
0
Defouille Messages postés 388 Date d'inscription   Statut Membre Dernière intervention   54
 
Avec plaisir ^^
0