Bonsoir à tous !
J'ai fais un script php pour afficher un calendrier, il fonctionne.
Mais lorsque je me lance tout seul dans ce genre de "projet" il m'arrive de faire des choses en php qui me paraissent logiques, mais qui je pense, peuvent se faire d'une autre manière beaucoup plus simple et/ou plus logique.
Par exemple dans une boucle qui affiche un tableau, pour indiquer de passer à la ligne suivante etc...
Bref, c'est pour cela que je vous demande comment je peux améliorer mon code pour qu'il soit plus clair, et plus logique, mais sans modifier tout le processus de base du calendrier...
Voilà le code :
Merci à vous !
Modifié par Crousti2 (21 Dec 2011 - 22:35)
J'ai fais un script php pour afficher un calendrier, il fonctionne.
Mais lorsque je me lance tout seul dans ce genre de "projet" il m'arrive de faire des choses en php qui me paraissent logiques, mais qui je pense, peuvent se faire d'une autre manière beaucoup plus simple et/ou plus logique.
Par exemple dans une boucle qui affiche un tableau, pour indiquer de passer à la ligne suivante etc...
Bref, c'est pour cela que je vous demande comment je peux améliorer mon code pour qu'il soit plus clair, et plus logique, mais sans modifier tout le processus de base du calendrier...
Voilà le code :
<?php
$annee = 2011; //année du calendrier
$date = mktime(0, 0, 0, 1, 1, $annee); //timestamp au 1er janvier de l'année voulue
$jour = array('', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi', 'Dimanche');
$mois = array('', 'Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre');
$mois_chiffre = 0;
echo "<h1>".$annee."</h1>";
while (date('Y', $date) <= $annee) //tant que l'année du timpstamp (du 1er janvier de cette année) est inférieure ou égale à cette année on boucle, dans la boucle on incrémente de 1 jour, le timestamp
{
$annee = date('Y', $date); //l'année du timestamp
$jour_chiffre = date('j', $date); //le jour du timestamp (1, 2, ... 31)
$jour_nom = str_replace('0', '7' ,date('w' ,$date)); //le jour du timestamp ( 1, 2 ... 7 avec 1 = lundi....)
// - 1 - Permet de laisser des cases vides au début du mois pour les jours non occupés
if ($jour_nom != 1)
{
$cases_vides = "<td colspan='".($jour_nom - 1)."'></td>";
}
else
{
$cases_vides = "";
}
// - 1 --
// - 2 - Quand on arrive à dimanche on ferme la ligne et on ouvre la suivante
if ($jour_nom == 7)
{
$changer_semaine = "
</tr>
<tr>";
}
else
{
$changer_semaine = "";
}
// - 2 --
// - 3 - On affiche le calendrier
if ($mois_chiffre != date('n', $date)) //Si on change de mois...
{
$mois_chiffre = date('n', $date);
// - 4 - Pour janvier on ferme pas tout de suite la table et ni tr, pour les autres mois oui vu qu'il y a toujours un autre mois avant.
if ($mois_chiffre != 1)
{
$table_fin = "</table>";
$tr_fin = "</tr>";
}
else
{
$table_fin = "";
$tr_fin = "";
}
// - 4 --
echo "
".$tr_fin."
".$table_fin."
<h2>".$mois[$mois_chiffre]."</h2>
<table>
<tr>
<th>Lundi</th>
<th>Mardi</th>
<th>Mercredi</th>
<th>Jeudi</th>
<th>Vendredi</th>
<th>Samedi</th>
<th>Dimanche</th>
</tr>
<tr>
".$cases_vides."<td>".$jour_chiffre." - ".$jour[$jour_nom]."</td>".$changer_semaine.""; //... l'affiche
}
else //...si on ne change pas de mois...
{
// - 4 - Pour janvier on ferme pas tout de suite la table et ni tr, pour les autres mois oui vu qu'il y a toujours un autre mois avant.
if ($mois_chiffre != 1)
{
$table_fin = "</table>";
$tr_fin = "</tr>";
}
else
{
$table_fin = "";
$tr_fin = "";
}
// - 4 --
echo "<td>".$jour_chiffre." - ".$jour[$jour_nom]."</td>".$changer_semaine.""; //...on ne l'affiche pas
}
// - 3 --
$date = $date + 86400; //on rajoute le nombre de seconde équivalent à 1 jour, au timestamp
}
?>
</tr> <!-- On ferme la dernière ligne du mois de décembre -->
</table> <!-- On ferme la table du mois de décembre -->
Merci à vous !
Modifié par Crousti2 (21 Dec 2011 - 22:35)