[PHP-MYSQL] Afficher dates un mois après l'autre

Afficher dates un mois après l'autre [PHP-MYSQL] - PHP - Programmation

Marsh Posté le 07-03-2006 à 18:16:09    

hello,
pour un site d'un groupe de musique, je cherche à afficher les dates de cette manière:
Mars:
01/03 Paris
03/03 Strasbourg
08/03 Reims
 
Avril
04/04 Lyon
05/04 Vienne
 
 
 
je pense que la solution est une requète avec le mois en cours, puis le mois + 1, mais je vois pas trop comment mettre ça en oeuvre, pour spécifier qu'au changement de mois, on réaffiche le mois puis les dates


---------------
"J'adore me promener en ville avec ma décapotable" JFK
Reply

Marsh Posté le 07-03-2006 à 18:16:09   

Reply

Marsh Posté le 07-03-2006 à 18:19:51    

Tes données sont stockés dans quoi? Si c'est dans une base de donnée, c'est quoi le type de la colone?
Si la colone est de type texte et dérivé (char, varchar, text,blob ...) ou si c'est socké dans un fichier, alors quel est le format de stockage choisit : En gros, les années en premier ou en dernier? Sur combien de chiffres? idem pour les mois et les jours. Et aussi quel est le séparateur choisit?
 
En fonction de ta réponse, la solution ne sera pas la même.

Reply

Marsh Posté le 07-03-2006 à 18:26:10    


dans ta boucle d'affichage des resultats tu fais quelque chose comme ça :  

Code :
  1. $ancienMois = "";
  2. while($data = myslq_fetch_array($result)){
  3.     $mois = $data['mois'];
  4.     if($mois != $ancienMois)
  5.          echo $mois;
  6. }


---------------

Reply

Marsh Posté le 07-03-2006 à 18:31:41    

je stocke les dates dans une colonne de type date, pr le moment j'affiche tout en vrac:

Code :
  1. $query = "SELECT * FROM dates WHERE CURDATE() <= date limit 0,15 ";
  2. $result = mysql_query($query);
  3. while ($row = mysql_fetch_array($result))
  4. {
  5. list($year, $month, $day) = explode("-", $row['date']);
  6. $contenu = nl2br($row[contenu]);
  7. echo "<table border=\"0\" cellspacing=\"0\">";
  8.  echo "<tr>";
  9. echo $lastmodified = "<td class=\"texte-12\"><font color=\"#FFFFFF\" size=\"-2\" face=\"Geneva, Arial, Helvetica, sans-serif\">$day/$month</font></td>";
  10. echo "<td class=\"texte-12\"><font color=\"#FFFFFF\" size=\"-2\" face=\"Geneva, Arial, Helvetica, sans-serif\">".$row[ville_pays]."</font></td>";
  11.  echo "</tr>\n";


---------------
"J'adore me promener en ville avec ma décapotable" JFK
Reply

Marsh Posté le 07-03-2006 à 18:36:08    

Citation :

list($year, $month, $day) = explode("-", $row['date']);

Vu que t'as déjà ça dans ton code, alors utilise donc le contenu de ces variables pour afficher ta date comme t'en as envie.
 
Il te reste plus qu'a comparer le contenu de $month avec la valeur du mois de la date précédante pour savoir si on change de mois.
 
A noter aussi le mot clé "ORDER BY" utilisable dans une requette de type "SELECT" et qui permet d'indique dans quel ordre la bdd doit trier les donées qu'elle nous retourne. En clair, là, il faudrait un "ORDER BY date" avant le "LIMIT" de ta requette.

Reply

Marsh Posté le 07-03-2006 à 18:52:06    

ok merci, en gros comme ce que flo proposait, en général je repompe du code, là je fais tout tout seul et j'ai du mal ;) mais j'aime ça


---------------
"J'adore me promener en ville avec ma décapotable" JFK
Reply

Marsh Posté le 07-03-2006 à 18:58:59    

"Ca fait du bien là où ca fait mal." :lol:  
Y a des pubs qui restent, comme ça, on sait pas pourquoi. :whistle:  

Reply

Marsh Posté le 07-03-2006 à 19:42:47    

Edit: nan rien, j'ai trouvé tout seul


Message édité par gaetan7 le 07-03-2006 à 19:46:50

---------------
"J'adore me promener en ville avec ma décapotable" JFK
Reply

Marsh Posté le 10-03-2006 à 12:49:36    

bon, j'ai fait ça

Code :
  1. <?php
  2. //connexion
  3. require("connect.php" );
  4. $aMonthNames = array (1 => 'janvier', 2 => 'février',  3 => 'mars',  4 => 'avril',  5 => 'mai',  6 => 'juin',  7 => 'juillet',  8=> 'aout',  9=> 'septembre',  10 => 'octobre',  11=> 'novembre',  12 => 'decembre');
  5. $sQuery = 'SELECT MONTH(date) AS mois FROM dates';
  6. $rReq = mysql_query ($sQuery) or die (mysql_error());
  7. while ($aRes = mysql_fetch_assoc($rReq)) {
  8.    $aMois[] = $aRes['mois'];
  9. }
  10. foreach ($aMois as $mois) {
  11.    echo $aMonthName[$mois], '<br />';
  12.    $sQuery = 'SELECT * FROM dates WHERE MONTH(date) = \''.$mois.'\' ORDER BY id';
  13.   $rReq = mysql_query ($sQuery);
  14. while ($row= mysql_fetch_assoc ($rReq)) {
  15. $id_print = $row['id'];
  16. list($year, $month, $day) = explode("-", $row['date']);
  17. $contenu = nl2br($row[contenu]);
  18. //affichage
  19. echo "<table border=\"0\" cellspacing=\"0\">";
  20.  echo "<tr>";
  21. echo $lastmodified = "<td class=\"texte-11\">$day/$month</td>";
  22. echo "<td class=\"texte-11\">".$row[ville_pays]."</td>";
  23. echo "<td class=\"texte-11\"> - ".$row[nom_salle]."</td>";
  24. echo "<td class=\"texte-11\">[ <a href=\"#\" onClick=\"window.open('fr-tour_info.php?&id=$id_print','Infos','toolbar=0, location=0, directories=0, status=0, scrollbars=0, resizable=1, copyhistory=0, menuBar=0, width=500, height=200, left=150, top=150');return(false)\">Infos</a> ]</td>";
  25.  echo "</tr>\n";
  26. echo "</table>";
  27. }
  28. }
  29. ?>


 
il m'affiche 6 fois la même chose ??


Message édité par gaetan7 le 10-03-2006 à 14:40:23
Reply

Marsh Posté le 10-03-2006 à 15:12:42    

trouvé!
j'ai changé ma requète en "$sQuery = 'SELECT DISTINCT MONTH(date) AS mois FROM dates';"

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed