Problème d'affichage pour un calendrier PHP
Résolu
Fetide68
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
Fetide68 Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
Fetide68 Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'essaie de faire tout seul un calendrier en PHP !
Un seul détail ne fonctionne pas, chaque mois commence un lundi comme ceci pour janvier:
L M M J V S D
1 2 3
4 5 6 7 8 9 10...
Le 4 est bien un lundi mais le premier, est un vendredi... J'essaie de trouver une condition pour afficher
Voici mon code :
Merci !
J'essaie de faire tout seul un calendrier en PHP !
Un seul détail ne fonctionne pas, chaque mois commence un lundi comme ceci pour janvier:
L M M J V S D
1 2 3
4 5 6 7 8 9 10...
Le 4 est bien un lundi mais le premier, est un vendredi... J'essaie de trouver une condition pour afficher
'<td> </td>'si le jour ne correspond pas mais je ne vois pas... :
Voici mon code :
<span class="location">
<form method="post" id="dates">
<select name="mois" id="mois" onchange="document.getElementById('dates').submit();">
<?php
$mois = array ('','Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Décembre');
$jours = array ('Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi');
$selected_month = Securite::bdd($_POST['mois']);
for ($mm=1;$mm<=12;$mm++) {
if ($mm != $selected_month) {
echo '<option value="'.$mm.'">'.$mois[$mm].'</option>';
}
else {
echo '<option value="'.$mm.'" selected>'.$mois[$mm].'</option>';
}
}
?>
</select>
<select name="annee" id="annee" onchange="document.getElementById('dates_foyer').submit();">
<?php
$annee_courante = date('Y',time());
$annee_suivante = date('Y',time())+1;
$selected_year = Securite::bdd($_POST['annee']);
if ($selected_year == $annee_suivante) {
echo '<option value="'.$annee_courante.'">'.$annee_courante.'</option>';
echo '<option value="'.$annee_suivante.'" selected>'.$annee_suivante.'</option>';
}
else {
$selected_year = date('Y',time());
echo '<option value="'.$annee_courante.'" selected>'.$annee_courante.'</option>';
echo '<option value="'.$annee_suivante.'">'.$annee_suivante.'</option>';
}
?>
</select>
</form>
</span>
<?php
if ($selected_month != '' && $selected_year != '') {
$month = $selected_month;
$year = $selected_year;
echo $mois[$month].' '.$year;
}
else {
$month = date ('n',time());
$year = date ('Y',time());
echo $mois[$month].' '.$year;
}
// date choisie en timestamp
$selected_date = strtotime('01-'.$month.'-'.$year);
// nombre de jour pour le mois et de l'année choisie
$nombre_de_jour = date ('t',$selected_date);
echo '<br><br>';
echo '<br><br>';
echo '<table class="calendrier" style="margin: auto; width: 420px;">';
echo '<tr class="entete"><td>L</td><td>M</td><td>M</td><td>J</td><td>V</td><td class="weekend">S</td><td class="weekend">D</td></tr>';
for ($day=1; $day<=$nombre_de_jour; $day++) {
$date_du_day = strtotime($day.'-'.$month.'-'.$year);
$jours_semaine = Array("0", "1", "2", "3", "4", "5", "6", "0");
$jour_de_la_semaine = date('w',$date_du_day);
if ($jour_de_la_semaine==1) {
echo '<tr>';
}
echo '<td>'.$day.'</td>';
if ($jour_de_la_semaine==0) {
echo '</tr>';
}
}
echo '</table>';
?>
Merci !
Configuration: Windows Vista Firefox 3.5.7
9 réponses
-
il y en a des tout fait moi j ai trouvé celui là je ne sais plus ou http://jeanmichel.gens.free.fr/calendrier.php j ai le source si besoin
-
Oui, mais je suis débutant et je cherche à le faire moi même...
Il ne me manque pas grand chose... -
la plupart des gens ici ne vont pas lire le code fourni c est mieux de donner un lien d abord
de cette manière les gens concrétisent le problème et seront plus enclins à lire le code
-
En clair, mon problème est le suivant :
http://membres.multimania.fr/killmicht/calendrier/
Si au moins tous les mois commençaient par un vendredi ou un semedi... mais pas un lundi...
J'ai encore ce compte lycos mais le php semble être capricieux... -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
voici la correction de ton module http://jeanmichel.gens.free.fr/tetu.zip
-
-
Je viens de voir ton message, je décortique à fond pour tout comprendre et donne suite à ton message et au post...
Merci -
Merci beaucoup,
J'ai tenté de faire ma propre boucle en m'inspirant de la tienne que j'ai bien compris (mais comme c'est un exercice, je tiens à m'entraîner avec sérieux). Le problème c'est que ça fonctionne en local mais pas en ligne...
http://www.membres.lycos.fr/killmicht/calendrier/
Voici mon code qui fonctionne aussi (juste pour la boucle) :for ($day=1; $day<=$nombre_de_jour; $day++) { // Conversion des dates en timestamp $date_du_day = strtotime($day.'-'.$month.'-'.$year); $position_jour = Array(0,1,2,3,4,5,6,0); $jour_de_la_semaine = date('w',$date_du_day); $jour_du_mois = date('j',$date_du_day); if ($jour_de_la_semaine==1 || $jour_du_mois==1) { echo '<tr>'; if ($jour_du_mois==1) { $i=1; while ($i != $position_jour[$jour_de_la_semaine]) { echo '<td> </td>'; $i++; } } } if ($date_du_day > time()) { echo '<td><a href="?c=infos&p=foyer&r='.$date_du_day.'">'.$day.'</a></td>'; } else { echo '<td>'.$day.'</td>'; } if ($jour_de_la_semaine==0) { echo '</tr>'; } } -
J'ai compris...
Moi j'ai fait un echo des td et toi tu as mis les td dans $m et tu echo $m quand tu en as besoin...
Merci !