par
stopher » 07 juin 2009, 09:36
Slt ,
Si tu as plusieurs enregistrements pour l'année X , il est normale qu'il y ai plusieurs lignes avec cette même année non ?
Sinon, yu peux utiliser en plus de ORDER BY , le GROUP BY , mais dans ce cas là , il n'y aura plus qu'une ligne par année .. ( ce qui ne me semble pas tres logique vu ton appli ).
Peut être ton problème est juste au niveau de l'affichage ? ( tu veux ne voir apparaitre qu'une fois l'année , même s'il y a plusieurs enregistrements ) ?
Dans ce cas , il faut ajouter quelques petites choses dans ta boucle while(){...}
Le principe est de vérifier si l'année n'a pas déjà été affichée , on va donc utiliser un tableau par exemple , qui contiendra les années affichées .
ce qui nous donne un truc du style :
...
//initialisation du tableau
$TalreadyWrite = array();
while ($data = mysql_fetch_array($recup))
{
//Si l'année n'est pas encore affichée
if( !in_array($data['annee'], $TalreadyWrite) ){
echo "<h3 class=ui-accordion-header><a href='#'>" . $data['annee'] . "</a></h3>";
//ajout de l'année dans le tableau afin de ne plus l'afficher
array_push($TalreadyWrite, $data['annee']);
}
echo "<div class=ui-accordion-content>";
echo "<p class='p_recompenses'>";
echo "<span class='premier'> " . $data['nom'] . "</span>";
echo "<span class='deuxieme'> " . $data['prenom'] . "</span>";
echo "<span class='troisieme'> " . $data['objet'] . "</span>";
echo "<span class='quatrieme'> " . $data['commentaire'] . "</span>";
echo "</p>";
echo "</div>";
}
//suppression du tableau utilisé
unset($TalreadyWrite);
...
Attention tout de même , avec ce fonctionnement il faut que les année identiques se suivent ( laisser ORDER BY dans ta requête ) sinon , tu risques de mélanger les résultats !
Mais si tu laisses ORDER BY , c'est bon
Maintenant , j'ai peut être mal compris ce que tu souhaites reellement faire :-/
Ch.