[RESOLU] affichage image avec tri par date de modification

HERMINE91
Invité n'ayant pas de compte PHPfrance

02 janv. 2016, 17:04

Bonjour à tous

Je fais appel à vous car je ne parviens pas à gérer comme je le souhaite l'affichage de mes images sur mon site.
Actuellement elles s'affichent par ordre alphabétique (pas pratique du tout) alors que je voudrais un affichage descendant par date de dernière modification.
Pouvez-vous m'aider ? :(

Merci par avance.

Mon code actuel (affichage dans un tableau HTML) :

<?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
}
}
}
?>

Mammouth du PHP | 2703 Messages

02 janv. 2016, 17:20


HERMINE91
Invité n'ayant pas de compte PHPfrance

02 janv. 2016, 17:51

Merci
Je vais potasser cette doc.

HERMINE91
Invité n'ayant pas de compte PHPfrance

02 janv. 2016, 18:48

Je ne suis pas doué...ça je le savais :P
Dans mon nouveau code ci-dessous, comment feriez-vous pour afficher les images (dont les noms de fichiers sont censés maintenant être dans le tableau) dans ma balise <IMG> ?


<tr>
<td rowspan="3">
<?php
$folder = './img/Accueil';
$dircontent = scandir($folder);
$arr = array();
foreach ($dircontent as $filename)
{
if ($filename != '.' && $filename != '..')
{
if (filemtime($folder.$filename) === false) return false;
$dat = date("YmdHis", filemtime($folder.$filename));
$arr[$dat] = $filename;
}
}
if (!ksort($arr)) return false;
return $arr;
?>
<img style="z-index:0; width: 300px;" src="<?php echo $arr ?>" >
</td>
</tr>

Petit nouveau ! | 9 Messages

03 janv. 2016, 22:58

Je viens de trouver la solution à mon problème. Je vous la livre donc au cas ou cela puisse servir.
Les pros trouveront probablement à redire de la technique, mais l'important n'est-il pas le résultat :)
Rappel du besoin :
Afficher des photos dans un tableau HTML.
Ces photos se trouvent dans un répertoire dédié.
L'affichage doit être décroissant en fonction de la date de modification.
Ceci afin que les dernières photos apparaissent en premier sur mon site.


<td rowspan="3">
<?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/Accueil/';
$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>