PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 02-01-2016 20:38:09

HERMINE
Membre
Inscription : 13-01-2015
Messages : 2

Help - affichage des images, trié par date de modification

Bonjour
Dans un tableau HTML j'affiche actuellement les images présentes dans un répertoire "accueil".
Je voudrais afficher ces mêmes images (au même endroit) mais dans un ordre différent.
Actuellement elles sont affichées par ordre alphabétique et je voudrais les afficher en les triant par la date de modification.
En vous remerciant par avance.

                <tr>
                    <td rowspan="3">
                        <?php
                        $dirName = './img/Accueil';
                        $files = scandir($dirName);
                        foreach ($files as $file)
                        {
                          if ($file != '.' && $file != '..')
                          {
                            if(is_file($dirName.'/'.$file))
                            {
                              $nb_fichier++;
                              ?>
                              <img style="z-index:0; width: 300px;" src="<?php echo $dirName.'/'.$file; ?>" >
                              <?php
                            }
                          }
                        }
                        ?>
                    </td>
                </tr>


Hors ligne

#2 23-01-2016 12:51:49

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 624
Site Web

Re : Help - affichage des images, trié par date de modification

Bonjour,

Si le nombre de lignes est important, je vous recommande de faire ce tri directement au niveau de votre requête SQL en amont.
Sinon, il faut idéalement que vos date soient chargées telles qu'elles sont stockées sur votre SGBDR c'est à dire au format "YYYY-MM-DD hh:mm:ss" ce qui va vous permettre de reclasser votre tableau de données au niveau de PHP sur cette colonne par un simple classement alphabétique ou alphabétique inverse pour obtenir le résultat désiré.

Bon week-end.

Dernière modification par Jc (23-01-2016 12:52:17)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#3 23-01-2016 14:08:30

HERMINE
Membre
Inscription : 13-01-2015
Messages : 2

Re : Help - affichage des images, trié par date de modification

Bonjour et merci pour la réponse.
En fait j'ai trouvé la solution.
Je vous fournis le script au cas ou cela puisse servir à d'autres.

    <tr valign="top">
        <td style="vertical-align: top;">   
            <?php
/*
Principe de ce petit script :
On charge dans un tableau les noms de fichiers présent dans le répertoire d'image
mais en les prefixant par leur date de modification (avec un séparateur "@")
On trie ensuite ce tableau en ordre descendant afin de bénéficier des images les plus récentes
en premier.
Ensuite on dépile ce même tableau trié, mais en découpant la variable(date+nom de fichier) afin de ne
conserver que le nom de fichier.

On peut ainsi afficher via la balise <img> l'image en question en bouclant sur la table.
*/
                        $arr = array();
                        $folder = './img/Membres/';                           
                        $fichier = scandir($folder);
                        $i++;
                        foreach ($fichier as $key => $value)
                        {
                          if ($value != '.' && $value != '..')
                          {
                            $chemcomplet = $folder.$value;
                            $dat = date("YmdHis", filemtime($chemcomplet));
                            $arr[$i] = $dat."@".$value;
                            $i++;
                          }
                        }
                        arsort($arr);
/*                        print_r($arr); */
                        foreach ($arr as $nomfichier)
                        {
                          if ($nomfichier != '.' && $nomfichier != '..')
                          {
                            $findme = "@";
                            $pos = strpos($nomfichier, $findme);
                            $rest = substr($nomfichier, $pos+1);
                            ?>
                            <img style="z-index:0; width: 300px;" src="<?php echo $folder.'/'.$rest?>" ><?php
                          }
                        }
                        ?>

    </td>

Hors ligne

Pied de page des forums