[RESOLU] Classer les images par date dans une galerie

Invité
Invité n'ayant pas de compte PHPfrance

08 août 2014, 18:10

Bonjour à tous,

Pour commencer, j'ai quelques bases de php, mais je reste une quiche ^^. Je suis meilleurs en html. Alors désolé si la question est bete, ou si mes scripts sont pas très jolis ^^

Donc, j'ai pour projet de développer un hébergeur d'image pour le compte d'un club dont je suis membre, afin de faciliter l'insertion d'image dans les posts. Tout fonctionne, hormis une chose : l'affichage de la galerie d'image que l'utilisateur a posté. Avant je faisait simplement un opendir, mais ça affichait les images classées par nom, et non par date, ce qui aurait vite été pénible sir le user upload 200 photos !

Pour ça, j'ai rajouté une insertion en base de données du nom de la photo.

J'arrive ensuite à le récupérer dans la galerie, et à l'afficher, seulement avec mon code, je n'affiche qu'une seule photo (la première qu'il trouve en base de donnée), et non toute comme c'était le cas avec mon code précédent.

Auriez vous une solution pour afficher toute les photos (et soyons fou, les classer par date, de la plus récente à la plus ancienne ?

Ma base de donnée :

Nom de la table : Photos
Colonnes :
id,
login (celui de la personne qui a envoyé la photo, car il faut se loguer pour utiliser le service, et on ne voit que ses propre photos, pas celle des autres)
Nom_de_la_photo (avec l'extension)
date (date et heure de l'upload)

La fin du code de ma galerie :

Code : Tout sélectionner

<?php //Connexion à la base $base = mysql_connect ('*******', '******', '******'); mysql_select_db ('*******', $base); // recherche dans la base $sql = 'SELECT Nom_de_la_photo FROM Photos WHERE login="'.mysql_real_escape_string($_SESSION['login']).'"'; $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); while($data = mysql_fetch_assoc($req)) $photo = $data['Nom_de_la_photo']; //affichage $photo pour test echo $photo; //repertoires $directory = "/Utilisateurs/".$_SESSION['login']; $directory2 = "/Miniatures/".$_SESSION['login']; //affichage dans la gallerie $openmin = opendir($directory3); while($file = readdir($openmin))//{ //$allow_extension = array("jpg",'png','gif'); //$extension = strtolower(substr($file,-3)); //if(in_array($extension,$allow_extension)){ //} //} ?> <a href="<?php echo $directory; ?>/<?php echo $photo; ?>" rel="zoombox[galerie]"> <img src="<?php echo $directory2; ?>/<?php echo $photo; ?>"/> <?php mysql_close(); ?>
Voilà c'est pas super jolie, mais ça marchait pour ouvrir le dossier et afficher les photos. Il y a 2 images : une miniature, et celle redimensionnée en 800*600, qui se stockent dans 2 répertoires différents, au nom de l'utilisateur.

Eléphanteau du PHP | 11 Messages

08 août 2014, 18:23

Oups j'étais pas logué :roll:

ViPHP
ViPHP | 1996 Messages

08 août 2014, 19:37

Pour toute les photos, je pense que tu écrases à chaque fois la "pile" mysql.
Il faut donc que tu boucles dans ton "while"
<?php
//ajout de : mais une accolade ouvrante est aussi possible
while($data = mysql_fetch_assoc($req)) : 
      $photo = $data['Nom_de_la_photo'];

   //affichage $photo pour test   
      echo $photo;

   //repertoires
$directory = "/Utilisateurs/".$_SESSION['login'];
$directory2 = "/Miniatures/".$_SESSION['login'];

   //affichage dans la gallerie
$openmin = opendir($directory3);
while($file = readdir($openmin))//{
   //$allow_extension = array("jpg",'png','gif');
   //$extension = strtolower(substr($file,-3));
   //if(in_array($extension,$allow_extension)){
   //}
   //}
?>
   <a href="<?php echo $directory; ?>/<?php echo $photo; ?>" rel="zoombox[galerie]">
   <img src="<?php echo $directory2; ?>/<?php echo $photo; ?>"/>
<?php

endwhile;
//ajout de endwhile mais accolade fermante est aussi possible
   mysql_close();
?>

Pour le classement par date :

ca dépend comment est la "colonne" date mais essaye avec :
// recherche dans la base
   $sql = 'SELECT Nom_de_la_photo FROM Photos WHERE login="'.mysql_real_escape_string($_SESSION['login']).'" ORDER BY date ASC';
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Eléphanteau du PHP | 11 Messages

08 août 2014, 21:08

C'est tout bon, merci milles fois :D

Comme j'étais pas logué, je peux pas passer le sujet en résolu, si un modo peut le faire ... Merci !