Classer des dates de concerts mois par mois [Résolu]

Signaler
Messages postés
13
Date d'inscription
vendredi 10 mars 2006
Statut
Membre
Dernière intervention
26 février 2010
-
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
-
hello,
je dois faire un site pour mon groupe de musique et du coup me suis mis au php, pour le moment j'affiche les dates de concerts ainsi


28/03,
Jerez / Cadiz (es),
-,
[ Infos ]

29/03,
Almeria (es),
-,
[ Infos ]

30/03,
Valencia (es),
-,
[ Infos ]

31/03,
Zaragoza (es),
-,
[ Infos ]

01/04,
SAVIGNY-LE-TEMPLE (77),
- L'empreinte,
[ Infos ]

02/04,
REIMS (51),
- La cartonnerie,
[ Infos ]

03/04,
COLMAR (68),
- Le grillen,
[ Infos ]

04/04,
BOURGES (18),
- Emmetrop,
[ Infos ]

je souhaiterais un affichage de ce type:

Mars:
28/03,
Jerez / Cadiz (es),
-,
[ Infos ]

29/03,
Almeria (es),
-,
[ Infos ]

30/03,
Valencia (es),
-,
[ Infos ]

31/03,
Zaragoza (es),
-,
[ Infos ]

Avril:

01/04,
SAVIGNY-LE-TEMPLE (77),
- L'empreinte,
[ Infos ]

02/04,
REIMS (51),
- La cartonnerie,
[ Infos ]

03/04,
COLMAR (68),
- Le grillen,
[ Infos ]

04/04,
BOURGES (18),
- Emmetrop,
[ Infos ]

je pense faire un truc comme ça dans ma boucle d'affichage
vous pourriez m'aider un peu, je pense que dans ma boucle d'affichage je dois faire un while qui compare le mois , mais j'avoue que ça me dépasse un peu
merci

14 réponses

Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Ah putain oui, mea culpa ;-)
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Hello,

tu les récupères d'où, ces infos ? On a besoin de cette précision, et si possible d'un petit bout de code, pour t'aider.
Messages postés
13
Date d'inscription
vendredi 10 mars 2006
Statut
Membre
Dernière intervention
26 février 2010

voici le code
//connexion base
require("connect.php");

//requète$query "SELECT * FROM dates WHERE titre 'Incredible Tour 2006' ORDER BY id";
$result = mysql_query($query);
echo " Incredible Tour 2006
";
//boucle d'affichage du tableau
while ($row = mysql_fetch_array($result))
{


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


echo "\";
echo \"----
\";
echo $lastmodified = \"$day/$month, \";
echo \"".$row[ville_pays].", \";
echo \"- ".$row[nom_salle].", \";
echo \"[ Infos ], \";

echo \"\n\";

echo "
";
}
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Aau passage, pour des raisons de perf, il vaut mieux ne pas utiliser *, mais nommer tous les champs que l'on veut extraire, même si'il s'agit de TOUS les champs).

Ok donc tu as un champ 'date'. De quel type est-il ? S'il est de type datetime, c'est très facile :
SELECT tes champs FROM dates WHERE titre = 'Incredible Tour 2006' ORDER BY id, date
Messages postés
13
Date d'inscription
vendredi 10 mars 2006
Statut
Membre
Dernière intervention
26 février 2010

mon champ date est de type 'date' ;)


je souhaiterai juste faire une séparation automatiquement dès que l'on change de mois: plutôt que


01/02/06
06/02/06
01/03/06
09/03/06
11/04/06

j'aimerai
Février
01/02/06
06/02/06
Mars
01/03/06
09/03/06
Avril
11/04/06
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Aaaahhh...

Je serais toi, je pense que je ferais ça en 2 étapes, avec un ajout pour le nom des mois :$aMonthNames array (1> 'janvier', 2 => 'février', etc...);
une requête pour récupérer tous les mois de ta base:
SELECT MONTH(date) FROM dates


Et tu stockes ça dans un tableau? UN TRUC DU GENRE /


$sQuery = 'SELECT MONTH(date) AS mois FROM dates';
$rReq = mysql_query ($sQuery) or die (mysql_error());
while ($aRes = mysql_fetch_assoc($rReq)) {
$aMois[] = $aRes['mois'];
}

Puis je bouclerais dessus pour faire ma requête :
foreach ($aMois as $mois) {
echo $aMonthName[$mois], '
'; $sQuery 'SELECT ce que tu veux FROM dates WHERE MONTH(date) \''.$mois.'\' ORDER BY id';
$rReq = mysql_query ($sQuery);
while ($res = mysql_fetch_assoc ($rReq)) {
// ton affichage
}
}
Messages postés
13
Date d'inscription
vendredi 10 mars 2006
Statut
Membre
Dernière intervention
26 février 2010

je teste dès que j'ai 2 minutes
merci pour l'info!
Messages postés
13
Date d'inscription
vendredi 10 mars 2006
Statut
Membre
Dernière intervention
26 février 2010

io,
alors j'ai fait ça, mais il m'affiche aucune variable:

<?php
require("connect.php");


$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');



$sQuery = 'SELECT MONTH(date) AS mois FROM dates';
$rReq = mysql_query ($sQuery) or die (mysql_error());
while ($aRes = mysql_fetch_assoc($rReq)) {
$aMois[] = $aRes['mois'];
}
foreach ($aMois as $mois) {
echo $aMonthName[$mois], '
'; $sQuery 'SELECT * FROM dates WHERE MONTH(date) \''.$mois.'\' ORDER BY id';
$rReq = mysql_query ($sQuery);
while ($res = mysql_fetch_assoc ($rReq)) {


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


echo "\";
echo \"----
\";
echo $lastmodified = \"$day/$month, \";
echo \"".$row[ville_pays].", \";
echo \"- ".$row[nom_salle].", \";
echo \"[ Infos ], \";

echo \"\n\";

echo "
";
}
}
?>
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
A quel niveau ?
Messages postés
13
Date d'inscription
vendredi 10 mars 2006
Statut
Membre
Dernière intervention
26 février 2010

hé bien il ne m'affiche que


[ Infos ]


/,
,
-,
[ Infos ]


/,
,
-,
[ Infos ]


/,
,
-,
[ Infos ]


/,
,
-,
[ Infos ]








avec une séparation qui ne correspond pas au changement de mois
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Ah ben ouais...
while ($res = mysql_fetch_assoc ($rReq)) {

et

echo "<td class="texte-11">".$row[ville_pays]."</td>";
par exemple...

Remplace ton while :
while ($row= mysql_fetch_assoc ($rReq)) {

Tu as pris ma variable, mais tu n'as pas changé les tiennes... ;-)
Messages postés
13
Date d'inscription
vendredi 10 mars 2006
Statut
Membre
Dernière intervention
26 février 2010

purée la honte ;)



bon, ça marche mais il m'affiche le contenu 6 fois de suite par mois
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Ah, ça c'est génant.
C'est quoi qu'il t'affiche 6 fois de suite ? chaque contenu pour 1 mois ?
Tu as combien de mois dans ta base, à priori ?
(suffit de compter $aMois)
Messages postés
13
Date d'inscription
vendredi 10 mars 2006
Statut
Membre
Dernière intervention
26 février 2010

bon, ça marche, j'ai changé la requète en

"$sQuery = 'SELECT DISTINCT MONTH(date) AS mois FROM dates';"



pour qu'il me compte qu'une fois le mois, merci encore!