affichage par mois

affichage par mois - PHP - Programmation

Marsh Posté le 25-03-2015 à 11:34:08    

Bonjour,
je n'ai pas trouvé de réponse, sans doute parce que j'ai du mal à bien formuler mon souhait
 
j'ai une table avec des activités
id | nom | date
par exemple
1 | escalade | 2015-04-02
2| voile| 2015-04-02
3 | plongée | 2015-06-14
etc...
 
je souhaite afficher
Avril  
* escale
* voile
 
juin
*plongée
 
je peux trier par mois l'ensemble de mes données mais comment ressortir le mois puis la liste
 
je pense qu'une mauvaise idée est de faire 12 requetes
select * from table where date('mm') =1
etc...

Reply

Marsh Posté le 25-03-2015 à 11:34:08   

Reply

Marsh Posté le 25-03-2015 à 11:51:07    

Si t'es sous Mysql, tu fait ça :
SELECT DATE_FORMAT(date, "%Y-%m" ) as Mois, nom FROM Activites WHERE .... GROUP BY Mois ORDER BY Mois
 
Edit, si l'année importe pas, alors :
SELECT DATE_FORMAT(date, "%m" ) as Mois, nom FROM Activites WHERE .... GROUP BY Mois ORDER BY Mois


Message édité par rufo le 25-03-2015 à 11:51:55

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 19-04-2015 à 23:36:25    

Il y'a également la fonction MONTH() et YEAR()
 
SELECT id , nom , MONTH( date ) as mois FROM  Activites GROUP BY mois ORDER BY date DESC

Reply

Marsh Posté le 13-05-2015 à 16:18:39    

désolé de répondre si tardivement. Merci pour ces réponses, mais cela ne fonctionne pas vraiment, je ne ressors comme cela que un seul résultat par mois, même si il y en a plusieurs.
 
  $sql = "SELECT id_anim,tarif,titre, MONTH( date_d ) as mois FROM anim  
  GROUP BY Mois ORDER BY Mois";  
 
rappel de ce que je souhaite, si 3 animations en mai et 4 en juin par exemple, je souhaite afficher
 
mai
anim 1 | anim2 | anim3
juin
anim4| anim5 etc...

Reply

Marsh Posté le 13-05-2015 à 16:28:35    

Reply

Marsh Posté le 16-05-2015 à 16:31:56    

Code :
  1. SELECT  id_anim, tarif, titre, MONTH( date_d ) as mois FROM anim  ORDER BY date_d ASC
  2. $month = null;
  3. foreach $row {
  4.    if ($month != $row['mois']) {
  5.       echo $row['mois']. "\n";
  6.       $month = $row['mois'];
  7.    }
  8.    echo "* $row[titre]\n";
  9. }


 
Sinon tu peux aussi tout stocker dans un tableau, puis faire ce que tu veux avec le jeu de données.
 

Code :
  1. SELECT  id_anim, tarif, titre, MONTH( date_d ) as mois FROM anim  ORDER BY date_d DESC
  2. $dataset = array();
  3. $dataset_by_month = array();
  4. foreach $row {
  5.   $dataset[] = $row;
  6.   @$dataset_by_month[$row['mois']][] = $row;
  7. }
  8. $months = array(0, 'Jan', 'Fev', etc.);
  9. foreach ($dataset_by_month as $month => $records) {
  10.    echo $months[$month]. "\n";
  11.    foreach ($records as $row) {
  12.       echo "* ". $row['title']. "\n";
  13.    }
  14. }


Message édité par czh le 16-05-2015 à 16:50:15
Reply

Sujets relatifs:

Leave a Replay

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