PHP/MySQL - Trier des données

Résolu/Fermé
CarbonKoala Messages postés 11 Date d'inscription vendredi 29 avril 2011 Statut Membre Dernière intervention 22 novembre 2012 - 29 avril 2011 à 21:09
CarbonKoala Messages postés 11 Date d'inscription vendredi 29 avril 2011 Statut Membre Dernière intervention 22 novembre 2012 - 30 avril 2011 à 14:24
Bonjour,

Je vous sollicite, car j'ai un problème dans la programmation d'une galerie photo pour mon club de vélo.
Je souhaite que les membres du comité, par un simple formulaire, puisse envoyer des photos et créer des albums.

Pour l'instant, j'ai réussi:
1. Envoyer les photos dans un dossier spécifique
2. Entrer les données dans une base de donnée MySQL

La base de donnée est structurée ainsi:
1. id (le numéro de la photo (auto-incrémentation, clé primaire))
2. nomalbum (le nom de l'album dans lequel la photo se trouve)
3. cheminacces (où la photo se trouve sur le serveur)
4. date (c'est une chaine de caractère)

Donc j'ai une base de donnée avec des données du genre:
6 / Sortie VTT / images/galerie/sortie2011_1.jpg / le 29 avril 2011
5 / Sortie VTT / images/galerie/sortie2011_2.jpg / le 29 avril 2011
4 / Sortie VTT / images/galerie/sortie2011_3.jpg / le 29 avril 2011
3 / Sortie sur route / images/galerie/sortieroute_1.jpg / le 21 avril 2011
2 / Sortie sur route / images/galerie/sortieroute_2.jpg / le 21 avril 2011
1 / Sortie sur route / images/galerie/sortieroute_3.jpg / le 21 avril 2011

Je souhaiterais maintenant créer une requête PHP et MySQL pour trier les données extraites de la base et afficher ça sur le site de la sorte (je simplifie au maximum, j'aurai pas de problème à mettre en forme avec le PHP):

<h3>nomalbum1 (date1)</h3>
<img src="cheminaccesX" />

<h3>nomalbum2 (date2)</h3>
<img src="cheminaccesY" />

Mon principal problème est que je ne sais pas comment m'en sortir pour trier les données et séparer le nom de l'album du reste. En d'autres termes, je ne sais pas comment afficher le <h3>nomalbum (date)</h3> seulement 1 fois et pas entre chaque image (si j'ai plusieurs albums évidement).


J'espère avoir été assez clair :)

Merci d'avance de votre aide!
A voir également:

1 réponse

JooS Messages postés 2465 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
Modifié par JooS le 29/04/2011 à 22:00
Salut ...
Tu veut trier les données par date d'envoi, ou par Catégorie (Album) ??
1
CarbonKoala Messages postés 11 Date d'inscription vendredi 29 avril 2011 Statut Membre Dernière intervention 22 novembre 2012
30 avril 2011 à 00:10
Alors par catégorie d'album.

Donc du style:

PHOTO DU CAMP DE VACANCES (Le 20 avril 2011)
=img= =img= =img= =img= =img= =img= =img= =img=
=img= =img= =img= =img= =img= =img= =img= =img=
=img= =img= =img= =img= =img= =img= =img= =img=


PHOTO DE LA COURSE (Le 14 avril 2011)
=img= =img= =img= =img= =img= =img= =img= =img=
=img= =img= =img= =img= =img= =img= =img= =img=
=img= =img= =img= =img= =img= =img= =img= =img=
0
JooS Messages postés 2465 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
Modifié par JooS le 30/04/2011 à 01:06
OK, essaye ça ... pas sure ...

Ta requete doit etre du genre SELECT * FROM table ORDER BY nomalbum ASC
Ou tout simplement SELECT * FROM table

$old = 'vide';  
while($donnees = mysql_fetch_array($resultats)) {   
    if($donnees['nomalbum'] != $old) echo '<h4>'.$donnees['nomalbum'].' <em>('.$donnees['date'].')</em></h4>';   
    echo '<img src="'.$donnees['cheminacces'].'" />';   
    $old = $donnees['nomalbum'];   
}
0
CarbonKoala Messages postés 11 Date d'inscription vendredi 29 avril 2011 Statut Membre Dernière intervention 22 novembre 2012
30 avril 2011 à 09:00
Ca m'a l'air d'être un bon début! Je vais tester ça! Merci beaucoup.
0
CarbonKoala Messages postés 11 Date d'inscription vendredi 29 avril 2011 Statut Membre Dernière intervention 22 novembre 2012
30 avril 2011 à 13:57
Merci, ta solution fonctionne! J'ai encore un soucis: Les images sont comprises dans un paragraphe, mais je ne connais pas la fonction qui permet de savoir quand je peux fermer le paragraphe. J'ai pensé au code ci-dessous. Le problème c'est que de un, il ne marche pas (j'ai du faire une erreur de syntaxe) et de deux ça va fermer une fois que toutes les données seront analysées pas à la fin de chaque série de photo d'un album.

<?php
// Connexion à la base de données
try
{
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=xxxx;dbname=xxx', 'xxx', 'xxx.', $pdo_options);
// Récupération des 10 derniers messages
$reponse = $bdd->query('SELECT nomalbum, cheminacces, date FROM galerie ORDER BY nomalbum DESC LIMIT 0, 100');

$old = 'null';
$count = 0;
while ($donnees = $reponse->fetch())
{
if ($donnees['nomalbum'] != $old)
{
echo '<h4>' . $donnees['nomalbum'] . ' (' . $donnees['date'] . ')</h4>' ;
echo '<p class="photos"><a href="' . $donnees['cheminacces'] . '" rel="lightbox" title="' . $donnees['nomalbum'] . '"><img class="photos" src="' . $donnees['cheminacces'] . '"></a>' ;
$old = $donnees['nomalbum'];
$count = $count + 1;
if ($count = mysql_num_rows($reponse))
{
echo '</p>';
}
}
else
{
echo '<a href="' . $donnees['cheminacces'] . '" rel="lightbox" title="' . $donnees['nomalbum'] . '"><img class="photos" src="' . $donnees['cheminacces'] . '"></a>' ;
$count = $count + 1;
if ($count = mysql_num_rows($reponse))
{
echo '</p>';
}
}
}
$reponse->closeCursor();
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
?>
0
JooS Messages postés 2465 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
30 avril 2011 à 14:07
Je comprend pas ... !!!
0