par
sylvaing26 » 09 sept. 2009, 12:50
Je n'ai pas analyser ton code mais peut etre pour t'aider en mai le 1er du mois est un samedi

comme j'ai lu que tu faisais un traitement dessus
voila Bye Hawk
Merci beaucoup, c'est effectivement dans cette partie du code qu'il y avait l'erreur
/// si le prem jour de la semaine est bien un samedi
else{
$prem_j_sem = date("d-n-Y", mktime(0, 0, 0, $moisjour, 1, $annee));
$date = explode("-", $prem_j_sem);
$jour = $date[0];
$mois = $date[1];
$annee = $date[2];
//// l'erreur est sur cette ligne
$dern_j_sem = date("d-n-Y", mktime(0, 0, 0, $moisjour-1, 7+$prem_j_sem, $annee));
////
$date_d = explode("-", $dern_j_sem);
$jour_d = $date_d[0];
$mois_d = $date_d[1];
$annee_d = $date_d[2];
}
l'incrementation du mois n'etait pas bonne
il faut mettre
$dern_j_sem = date("d-n-Y", mktime(0, 0, 0, $moisjour, 7+$prem_j_sem, $annee));
Je vous donne le code en intégralité si ca peut servir à quelqun, il est un peu fouilli, il faudrai rajouter quelques lignes de commentaires ...
<meta http-equiv="content-type" content="text/html; charset=Windows-1252">
<?php
/// on récupère le mois du jour
$moisjour = date("n");
$annee = date("Y");
$semaine = date("W");
/// on donne les variables pour l'ecriture en toute lettre
function mois($moisjour){
if ($moisjour == 1){
$moisjour_lettres = "Janv.";}
elseif ($moisjour == 2){
$moisjour_lettres = "Févr.";}
elseif ($moisjour == 3){
$moisjour_lettres = "Mars";}
elseif ($moisjour == 4){
$moisjour_lettres = "Avr.";}
elseif ($moisjour == 5){
$moisjour_lettres = "Mai";}
elseif ($moisjour == 6){
$moisjour_lettres = "Juin";}
elseif ($moisjour == 7){
$moisjour_lettres = "Juil.";}
elseif ($moisjour == 8){
$moisjour_lettres = "Août";}
elseif ($moisjour == 9){
$moisjour_lettres = "Sept.";}
elseif ($moisjour == 10){
$moisjour_lettres = "Oct.";}
elseif ($moisjour == 11){
$moisjour_lettres = "Nov.";}
elseif ($moisjour == 12){
$moisjour_lettres = "Déc.";}
return($moisjour_lettres);
}
$i = 0;
while($i < 12){
$i2 = 0;
if($moisjour == 13){
$annee = $annee+1;
$moisjour = 1;}
if($i%2 == 0){
$fond = "images/calendar_fd.jpg";
$color = "#B3D8E8";
}
else{
$fond = "images/calendar_fd2.jpg";
$color = "#DEECF5";
}
$moisjour_lettres = mois($moisjour);
/// Début de la boucle pour le tableau
echo "<table cellpadding=\"0\" cellspacing=\"0\" bordercolordark=\"white\" bordercolorlight=\"black\" align=\"center\">
<tr>";
/// Nom du mois
echo"
<!-- DEBUT DU MOIS ".strtoupper($moisjour_lettres)." -->
<td width=\"30\" height=\"52\" style=\"background-image:url('images/calendar.gif'); background-repeat:no-repeat; background-attachment:scroll;\" valign=\"top\">
<p style=\"margin-top:17px; margin-bottom:0px;\" align=\"center\"><font face=\"Arial\"><span style=\"font-size:7pt;\"><b>".$moisjour_lettres."</b></span></font></p>
<p style=\"margin-top:0; margin-bottom:0;\" align=\"center\"><font face=\"Arial\"><span style=\"font-size:7pt;\">".$annee."</span></font></p>
</td>
<!-- FIN DU TITRE DE ".strtoupper($moisjour_lettres)."-->";
/// semaines
echo"
<td width=\"600\" height=\"52\" bgcolor=\"".$color."\" style=\"background-image:url('".$fond."'); background-repeat:no-repeat; border-bottom-width:2px; border-left-width:2px; border-bottom-color:white; border-left-color:white; border-bottom-style:solid; border-left-style:solid;\">
<table cellpadding=\"0\" cellspacing=\"0\" width=\"100%\" height=\"100%\">
<tr>
";
while($i2 < 5){
if($i2 == 0){
/// savoir quel est le premier jour de la semaine
$prem_j_sem = date("w", mktime(0, 0, 0, $moisjour, 1, $annee));
if($prem_j_sem != 6){
/// si le premier du mois ne tombe pas un samedi
$dern_j_mois_prec = date("d",mktime(0, 0, 0, $moisjour-1, 0, $annee));
$numero_du_jour_prec = date("w",mktime(0, 0, 0, $moisjour-1, $dern_j_mois_prec, $annee));
$ajout = -1;
if ($prem_j_sem == 0){
$ajout = 6;
}
$prem_j_sem = date("d-n-Y", mktime(0, 0, 0, $moisjour-1, $dern_j_mois_prec-$numero_du_jour_prec+$ajout, $annee));
$date = explode("-", $prem_j_sem);
$jour = $date[0];
$mois = $date[1];
$annee = $date[2];
$dern_j_sem = date("d-n-Y", mktime(0, 0, 0, $moisjour-1, 7+$prem_j_sem, $annee));
$date_d = explode("-", $dern_j_sem);
$jour_d = $date_d[0];
$mois_d = $date_d[1];
if($mois_d == 1){
$annee_d = $date_d[2]+1;
}
else{
$annee_d = $date_d[2];
}
}
/// si le prem jour de la semaine est bien un samedi
else{
$prem_j_sem = date("d-n-Y", mktime(0, 0, 0, $moisjour, 1, $annee));
$date = explode("-", $prem_j_sem);
$jour = $date[0];
$mois = $date[1];
$annee = $date[2];
$dern_j_sem = date("d-n-Y", mktime(0, 0, 0, $moisjour, 7+$prem_j_sem, $annee));
$date_d = explode("-", $dern_j_sem);
$jour_d = $date_d[0];
$mois_d = $date_d[1];
$annee_d = $date_d[2];
}
$i2=$i2+1;
}
else {
$prem_j_sem = date("d-n-Y", mktime(0, 0, 0, $mois_d, $jour_d, $annee_d));
$date = explode("-", $prem_j_sem);
$jour = $date[0];
$mois = $date[1];
$annee = $date[2];
$dern_j_sem = date("d-n-Y", mktime(0, 0, 0, $moisjour, $jour+7, $annee));
$date_d = explode("-", $dern_j_sem);
$jour_d = $date_d[0];
$mois_d = $date_d[1];
$annee_d = $date_d[2];
$i2=$i2+1;
}
echo"
<!-- SEMAINE ".$i2." DE ".strtoupper($moisjour_lettres)." -->
<td width=\"118\"";
if($i2 != 0){
echo "style=\"border-left-width:1px; border-left-color:white; border-left-style:solid;\"";
}
echo ">";
if($i2 == 5 AND $mois == $mois_d){
echo "<p align=\"center\"><font face=\"Arial\"><span style=\"font-size:8pt;\">Du ".$jour." ".mois($mois)." au ".$jour_d." ".mois($mois_d)."</span></font></p>";
}
elseif($i2 == 5 AND $jour_d == 1){
echo "<p align=\"center\"><font face=\"Arial\"><span style=\"font-size:8pt;\">Du ".$jour." ".mois($mois)." au ".$jour_d." ".mois($mois_d)."</span></font></p>";
}
elseif($i2 < 5){
echo "<p align=\"center\"><font face=\"Arial\"><span style=\"font-size:8pt;\">Du ".$jour." ".mois($mois)." au ".$jour_d." ".mois($mois_d)."</span></font></p>";
}
else {
echo "<p align=\"center\"><font face=\"Arial\"><span style=\"font-size:8pt;\"> </span></font></p>";
}
echo "</td>";
}
echo"
</tr>
</table>";
//// fin du code
echo "</td>
</tr>
</table>";
$moisjour = $moisjour + 1;
$i = $i +1;
$semaine = $semaine+1;
}
Prochaine étape : croiser ce tableau avec une base de donnée pour connaitre les semaines qui sont deja reservées !
Si le script final interresse quelqun, qu'il me le fasse savoir, dans ce cas je publierai le code une fois terminé
Bonne journée à tous !
[quote="thehawk"]Je n'ai pas analyser ton code mais peut etre pour t'aider en mai le 1er du mois est un samedi :) comme j'ai lu que tu faisais un traitement dessus
voila Bye Hawk[/quote]
Merci beaucoup, c'est effectivement dans cette partie du code qu'il y avait l'erreur
[php]/// si le prem jour de la semaine est bien un samedi
else{
$prem_j_sem = date("d-n-Y", mktime(0, 0, 0, $moisjour, 1, $annee));
$date = explode("-", $prem_j_sem);
$jour = $date[0];
$mois = $date[1];
$annee = $date[2];
//// l'erreur est sur cette ligne
$dern_j_sem = date("d-n-Y", mktime(0, 0, 0, $moisjour-1, 7+$prem_j_sem, $annee));
////
$date_d = explode("-", $dern_j_sem);
$jour_d = $date_d[0];
$mois_d = $date_d[1];
$annee_d = $date_d[2];
}
[/php]
l'incrementation du mois n'etait pas bonne
il faut mettre
[php]$dern_j_sem = date("d-n-Y", mktime(0, 0, 0, $moisjour, 7+$prem_j_sem, $annee));[/php]
Je vous donne le code en intégralité si ca peut servir à quelqun, il est un peu fouilli, il faudrai rajouter quelques lignes de commentaires ... :?
[php]<meta http-equiv="content-type" content="text/html; charset=Windows-1252">
<?php
/// on récupère le mois du jour
$moisjour = date("n");
$annee = date("Y");
$semaine = date("W");
/// on donne les variables pour l'ecriture en toute lettre
function mois($moisjour){
if ($moisjour == 1){
$moisjour_lettres = "Janv.";}
elseif ($moisjour == 2){
$moisjour_lettres = "Févr.";}
elseif ($moisjour == 3){
$moisjour_lettres = "Mars";}
elseif ($moisjour == 4){
$moisjour_lettres = "Avr.";}
elseif ($moisjour == 5){
$moisjour_lettres = "Mai";}
elseif ($moisjour == 6){
$moisjour_lettres = "Juin";}
elseif ($moisjour == 7){
$moisjour_lettres = "Juil.";}
elseif ($moisjour == 8){
$moisjour_lettres = "Août";}
elseif ($moisjour == 9){
$moisjour_lettres = "Sept.";}
elseif ($moisjour == 10){
$moisjour_lettres = "Oct.";}
elseif ($moisjour == 11){
$moisjour_lettres = "Nov.";}
elseif ($moisjour == 12){
$moisjour_lettres = "Déc.";}
return($moisjour_lettres);
}
$i = 0;
while($i < 12){
$i2 = 0;
if($moisjour == 13){
$annee = $annee+1;
$moisjour = 1;}
if($i%2 == 0){
$fond = "images/calendar_fd.jpg";
$color = "#B3D8E8";
}
else{
$fond = "images/calendar_fd2.jpg";
$color = "#DEECF5";
}
$moisjour_lettres = mois($moisjour);
/// Début de la boucle pour le tableau
echo "<table cellpadding=\"0\" cellspacing=\"0\" bordercolordark=\"white\" bordercolorlight=\"black\" align=\"center\">
<tr>";
/// Nom du mois
echo"
<!-- DEBUT DU MOIS ".strtoupper($moisjour_lettres)." -->
<td width=\"30\" height=\"52\" style=\"background-image:url('images/calendar.gif'); background-repeat:no-repeat; background-attachment:scroll;\" valign=\"top\">
<p style=\"margin-top:17px; margin-bottom:0px;\" align=\"center\"><font face=\"Arial\"><span style=\"font-size:7pt;\"><b>".$moisjour_lettres."</b></span></font></p>
<p style=\"margin-top:0; margin-bottom:0;\" align=\"center\"><font face=\"Arial\"><span style=\"font-size:7pt;\">".$annee."</span></font></p>
</td>
<!-- FIN DU TITRE DE ".strtoupper($moisjour_lettres)."-->";
/// semaines
echo"
<td width=\"600\" height=\"52\" bgcolor=\"".$color."\" style=\"background-image:url('".$fond."'); background-repeat:no-repeat; border-bottom-width:2px; border-left-width:2px; border-bottom-color:white; border-left-color:white; border-bottom-style:solid; border-left-style:solid;\">
<table cellpadding=\"0\" cellspacing=\"0\" width=\"100%\" height=\"100%\">
<tr>
";
while($i2 < 5){
if($i2 == 0){
/// savoir quel est le premier jour de la semaine
$prem_j_sem = date("w", mktime(0, 0, 0, $moisjour, 1, $annee));
if($prem_j_sem != 6){
/// si le premier du mois ne tombe pas un samedi
$dern_j_mois_prec = date("d",mktime(0, 0, 0, $moisjour-1, 0, $annee));
$numero_du_jour_prec = date("w",mktime(0, 0, 0, $moisjour-1, $dern_j_mois_prec, $annee));
$ajout = -1;
if ($prem_j_sem == 0){
$ajout = 6;
}
$prem_j_sem = date("d-n-Y", mktime(0, 0, 0, $moisjour-1, $dern_j_mois_prec-$numero_du_jour_prec+$ajout, $annee));
$date = explode("-", $prem_j_sem);
$jour = $date[0];
$mois = $date[1];
$annee = $date[2];
$dern_j_sem = date("d-n-Y", mktime(0, 0, 0, $moisjour-1, 7+$prem_j_sem, $annee));
$date_d = explode("-", $dern_j_sem);
$jour_d = $date_d[0];
$mois_d = $date_d[1];
if($mois_d == 1){
$annee_d = $date_d[2]+1;
}
else{
$annee_d = $date_d[2];
}
}
/// si le prem jour de la semaine est bien un samedi
else{
$prem_j_sem = date("d-n-Y", mktime(0, 0, 0, $moisjour, 1, $annee));
$date = explode("-", $prem_j_sem);
$jour = $date[0];
$mois = $date[1];
$annee = $date[2];
$dern_j_sem = date("d-n-Y", mktime(0, 0, 0, $moisjour, 7+$prem_j_sem, $annee));
$date_d = explode("-", $dern_j_sem);
$jour_d = $date_d[0];
$mois_d = $date_d[1];
$annee_d = $date_d[2];
}
$i2=$i2+1;
}
else {
$prem_j_sem = date("d-n-Y", mktime(0, 0, 0, $mois_d, $jour_d, $annee_d));
$date = explode("-", $prem_j_sem);
$jour = $date[0];
$mois = $date[1];
$annee = $date[2];
$dern_j_sem = date("d-n-Y", mktime(0, 0, 0, $moisjour, $jour+7, $annee));
$date_d = explode("-", $dern_j_sem);
$jour_d = $date_d[0];
$mois_d = $date_d[1];
$annee_d = $date_d[2];
$i2=$i2+1;
}
echo"
<!-- SEMAINE ".$i2." DE ".strtoupper($moisjour_lettres)." -->
<td width=\"118\"";
if($i2 != 0){
echo "style=\"border-left-width:1px; border-left-color:white; border-left-style:solid;\"";
}
echo ">";
if($i2 == 5 AND $mois == $mois_d){
echo "<p align=\"center\"><font face=\"Arial\"><span style=\"font-size:8pt;\">Du ".$jour." ".mois($mois)." au ".$jour_d." ".mois($mois_d)."</span></font></p>";
}
elseif($i2 == 5 AND $jour_d == 1){
echo "<p align=\"center\"><font face=\"Arial\"><span style=\"font-size:8pt;\">Du ".$jour." ".mois($mois)." au ".$jour_d." ".mois($mois_d)."</span></font></p>";
}
elseif($i2 < 5){
echo "<p align=\"center\"><font face=\"Arial\"><span style=\"font-size:8pt;\">Du ".$jour." ".mois($mois)." au ".$jour_d." ".mois($mois_d)."</span></font></p>";
}
else {
echo "<p align=\"center\"><font face=\"Arial\"><span style=\"font-size:8pt;\"> </span></font></p>";
}
echo "</td>";
}
echo"
</tr>
</table>";
//// fin du code
echo "</td>
</tr>
</table>";
$moisjour = $moisjour + 1;
$i = $i +1;
$semaine = $semaine+1;
}[/php]
Prochaine étape : croiser ce tableau avec une base de donnée pour connaitre les semaines qui sont deja reservées !
Si le script final interresse quelqun, qu'il me le fasse savoir, dans ce cas je publierai le code une fois terminé
Bonne journée à tous !