[RESOLU] Classement d'une liste de fichiers par nom

Eléphant du PHP | 67 Messages

03 janv. 2013, 01:40

Bonjour à tous ...

Un chapitre que je maitrise mal ...
Voici un petit script qui me permet d'afficher et de comparer des fichiers présents dans un répertoire:
$nb_fichier = 0;
$nb_ok = 0;
$nb_err = 0;
$fichier2="tblMaj.csv";
$tsref = filemtime('./csv/'.$fichier2);
$tsmin = filemtime('./csv/'.$fichier2)-180 ;
$tsmax = filemtime('./csv/'.$fichier2)+180 ;
$dtref = date("d/m/Y - H:i:s", filemtime('./csv/'.$fichier2));

echo "<u>Référence</u> : ";
echo "<font color=\"black\"> $fichier2</font>";
echo "<br><u>Date</u> : ";
echo "<font color=\"green\"> $dtref</font>" ;

echo '<ol>';
if($dossier = opendir('./csv'))
{
while(false !== ($fichier = readdir($dossier)))
{ // On ouvre la boucle
$extension=strrchr($fichier,'.');
$extension=substr($extension,1) ;
if($extension == 'csv')
{ // on ouvre la sélection des extensions csv
if($fichier != 'lkp_Langues.csv' && $fichier != 'tblProvinces.csv') { // On exclut ces deux fichiers indésirables
$nb_fichier++; // On incrémente le compteur de 1
if(filemtime('./csv/'.$fichier) != $tsref && filemtime('./csv/'.$fichier) != $tsmin && filemtime('./csv/'.$fichier) != $tsmax)
{ // on ouvre la comparaison de la date du fichier avec tblMaj si différent
echo '<li><font color=\'black\'>' . $fichier . ' :<br></font><font color=\'red\'>' . date("d/m/Y - H:i", filemtime('./csv/'.$fichier)) . ' ! Date</font></li>'; // on affiche en rouge
$nb_err++;
}
else 
{ // on ouvre la comparaison de la date du fichier avec tblMaj si égal
echo '<li><font color=\'black\'>' . $fichier . ' :<br></font><font color=\'green\'>' . date("d/m/Y - H:i", filemtime('./csv/'.$fichier)) . ' - OK </font></li>'; // on affiche en noir
$nb_ok++;
} // on ferme la comparaison des dates
} // On ferme le if (qui permet de ne pas afficher les fichiers indésirables)
} // fermer la sélection de l'extension csv
} // On termine la boucle

echo '</ol>';
echo 'Il y a <strong>' . $nb_fichier .'</strong> fichiers dans le dossier';
echo "<br>";
echo "<font color=\"green\">$nb_ok datés du $dtref</font><br>";
if ($nb_err != 0) {
echo "<font color=\"red\">$nb_err obsolètes ...</font>";
echo "<br>Il est conseillé de faire un reload complet de la database";
}
closedir($dossier);
}
else
     echo 'Le dossier n\' a pas pu être ouvert';

Tout fonctionne nickel mais si quelqu'un aurait la gentillesse de me dire comment classer ces fichiers par nom, ce serait sympa...

Un grand merci

ViPHP
ViPHP | 928 Messages

03 janv. 2013, 02:53

Bonsoir,

plutôt que de faire :
if($dossier = opendir('./csv'))
{
   while(false !== ($fichier = readdir($dossier)))
   {
      // ...
   }
}
faîtes ceci :
$fichiers = scandir('./csv');
sort($fichiers);
foreach ($fichiers as $fichier)
{
   // ...
}

Eléphant du PHP | 67 Messages

03 janv. 2013, 12:38

Ca roule ... Merci genova