1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
| $requete2 = "SELECT * FROM Planning WHERE nom_elem = 'evenement1' ORDER BY date_elem ASC";
// Je formule une requete pour récupérer toutes les
//dates correspondant à evenement1
$resultat2 = ExecRequete ($requete2,$connexion);
// Là, dans le résultat, j'ai toutes les dates.
// Il faut que j'arrive à grouper toutes les dates par mois.
// ex : Mars 2006, Octobre 2006
// Je spécifie une variable $i, pour ma boucle.
$i = '1';
while ($planning = ObjetSuivant($resultat2)) { // Je crée une
// boucle « Tant qu'il y a un résultat associé à ma requête... »
// On spécifie une variable fourre-tout qui contient
//toutes les dates en $dateplanning[$1] en $i++
$dateplanning[$i] = $planning->date_elem;
// On crée, à partir de chaque date, une date de type
// AAAA/MM/01, pour, plus tard, comparer deux dates
$datemoisencours = substr($dateplanning[$i],'0','4')."-".substr($dateplanning[$i],'5','2')."-01";
// Je récupère le mois en cours, pour créer une date
// de type AAAA/MM+1/01
$moisencours = substr($dateplanning[$i],'5','2');
// Si le mois en cours est inférieur à dix, j'ajoute 0,
// et j'obtiens ainsi le mois suivant.
if ($moisencours < '10') {
$moissuivant = $moisencours+'1';
$moissuivant = "0$moissuivant";
}
else {
$moissuivant = $moisencours+'1';
}
// Là j'ai la date du mois suivant.
$datemoisuivant = substr($dateplanning[$i],'0','4')."-".$moissuivant."-01";
// Si ce n'est pas la première entrée, je peux demander
//la création d'une variable donnant la date
// en format AAAA-MM-JJ de l'entrée précédente.
if ($i != '1') {
$dateentreeprecedente = substr($dateplanning[$i-'1'],'0','4')."-".substr($dateplanning[$i-'1'],'5','2')."-01";
}
// Si c'est la première entrée, je mets en écho le mois (en
//une seule fois), puis je spécifie comme requête : Choisir
// tous les éléments de planning quand le nom de l'élément
// est égal à l'évenement1 et que la date qui lui est associée
// se situe entre le premier du mois en cours et le premier du
// mois suivant. Dans cette requête, je spécifie une option GROUP BY
// pour éviter les éventuels doublons.
if ($i == '1') {
$datefinale = DateSimpleFr($datemoisencours);
echo "en <b>$datefinale</b> ";
$requete3 = "SELECT * FROM Planning WHERE nom_elem = 'evenement1' AND date_elem>='$datemoisencours' AND date_elem<'$datemoisuivant' GROUP BY lieu_elem ORDER BY date_elem ASC";
$resultat3 = ExecRequete($requete3,$connexion);
while ($donnees3 = ObjetSuivant($resultat3))
{
echo $donnees3->lieu_elem. ", ";
}
}
// Si ce n'est pas la première entrée, et que le mois de la ligne
// précédent n'est pas le même
// Que le mois en cours, j'effectue la même requête.
if ($i != '1' && $datemoisencours != $dateentreeprecedente)
{
$datefinale = DateSimpleFr($datemoisencours);
echo "en <b>$datefinale (date$i)</b> ";
$requete4 = "SELECT * FROM Planning WHERE nom_elem = 'evenement1' AND date_elem>='$datemoisencours' AND date_elem<'$datemoisuivant' GROUP BY lieu_elem ORDER BY date_elem ASC";
$resultat4 = ExecRequete($requete4,$connexion);
while ($donnees4 = ObjetSuivant($resultat4))
{
echo $donnees4->lieu_elem. ", ";
}
}
// J'auto-ajoute $i
$i++;
} |
Partager