par
dogmongo » 06 févr. 2009, 19:53
Bonjour,
Il y a quelques mois j'ai developper mon propre scripts calendrier dynamique, aujourd'hui je viens de me rendre compte qu'il ne fonctionne plus correctement , quelqu'un d'un niveau bien superieur au miens en php pourrait il m'expliquer mon erreur ?
j'ai aussi remarqué que la class que le membre
Cobaye avait posté sur le site section contribution fait exactement le même bug.
j'ai retirer tout le système dynamique du scripts pour le rendre plus lisible
un grand merci d'avance
ci-desous mon scripts
<?php
$url ="test.php";
// je déclare les variables de base jour mois annéee ou bien je les récupère via url
if(empty($mois)) $mois = date("m");
if(empty($annee)) $annee = date("Y");
if(empty($jour)) $jour = date("j");
$aff_mois = date("M",mktime(0,0,0,$mois,-1,$annee));
$aff_annee = date("Y",mktime(0,0,0,$mois,0,$annee));
$nb_jour_mois = date("t",mktime(0,0,0,$mois,1,$annee));
$premier_jour_du_mois = date("w",mktime(0,0,0,$mois,1,$annee));
$aujourdhui = date('j');
$jourdelasemaine = date('w', mktime(0,0,0,$mois,$jour,$annee));
$datefinmois= date("Y-m-d", mktime(0,0,0,$mois,$jour,$annee));
if( $mois < 10 ){ $news_mois = "0".$mois; }else{ $news_mois = $mois; }
$condition1 = "$annee-$news_mois-00";
$condition2 = "$annee-$news_mois-$nb_jour_mois";
$result = checkdate("$annee","$news_mois","$nb_jour_mois");
$date = time();
$new_annee = strftime("%G", $DB_Date_info);
$AFF_cal.= "<table style=\"font-size:11px;\">
<tr>
<td colspan=\"7\" style=\"color:#FFFFFF; padding:10px; height:30px; text-align:center;\"><span class=\"titre2\" >".$aff_mois. " " .$annee."</span></td></tr>
<tr style=\"color:#FFFFFF; background-color:#000000; padding:2px; height:25px; text-align:center; \">
<td> lu </td>
<td> ma </td>
<td> me </td>
<td> je </td>
<td> ve </td>
<td> sa </td>
<td> di </td>
</tr>\n";
$cell=0;
$week=0;
$casevide = 0; // jour de la semaine démarre à 0
$newsdate= 1;
for( $e=0; $e < $nb_jour_mois + $premier_jour_du_mois - 1 ; $e++ ){
$casevide++;
$week++;
if($casevide >= $premier_jour_du_mois){
if( $week >= 6 ){
// style en week end
if($newsdate == $aujourdhui && date("Y") == $annee && date("m") == $mois){ // aujourd'hui en week end
$result[$e].= " style=\"color:RED; background-color:#FFFFFF; padding:1px; border: 0px solid #004E99; width:20px; height:25px; text-align:center; \">$newsdate " .$even[$newsdate][$mois][$annee]."" .$even_mail[$newsdate][$mois][$annee]." ";
}else{
$result[$e].= " style=\"color:#FFFFFF; background-color:#003366; padding:1px; border: 0px solid #004E99; width:20px; height:25px; text-align:center; \">$newsdate " .$even[$newsdate][$mois][$annee]."" .$even_mail[$newsdate][$mois][$annee]." ";
}
($week == 7)? $week=0 : "";
}else if($newsdate == $aujourdhui && date("Y") == $annee && date("m") == $mois){ // aujourd'hui
if( $week >= 6 ){ // aujourd'hui et en week end
$result[$e].=" style=\"color:#003366; background-color:#ffffff; padding:1px; border: 0px solid #000000; width:20px; height:25px; text-align:center; \">".$newsdate;
}
}else{
$result[$e].=" style=\"color:#003366; background-color:#84A1BE; padding:1px; border: 0px solid #009900; width:20px; height:25px; text-align:center; \">$newsdate " .$even[$newsdate][$mois][$annee]."" .$even_mail[$newsdate][$mois][$annee]." ";
}
$newsdate++;
}else{
$result[$e].="";
}
}
//génère le calendrier
for( $n = 0 ; $n < $nb_jour_mois + $premier_jour_du_mois ; $n++ ) {
$AFF_cal.= ($cell == 0)? "<tr>\n" : "";
$AFF_cal.= ($result[$n]!="")? "<td ".$result[$n]."</td>\n" : "<td> </td>\n";
$cell ++;
$AFF_cal.= ($cell == 7)? "</tr>\n" : "";
$cell = ($cell == 7)? 0 : $cell;
}
// je déclare mes variable anne pour la navigation
$annee_pre = $annee;
$annee_next = $annee;
// je paramaitre ma navigation par mois
if($mois==1){
$M_previous = 12;
$annee_pre = $annee_pre -1;
}else{
$M_previous = $mois - 1;
}
if($mois==12){
$M_next = 1 ;
$annee_next = $annee_next +1;
}else{
$M_next = $mois + 1;
}
// je paramètre ma navigation par année
$A_previous = $annee - 1 ;
$A_next = $annee + 1 ;
$AFF_cal.= "
<tr style=\"color:#FFFFFF; background-color:#003366; padding:2px; height:25px; text-align:center;\">
<td colspan=\"3\">
<a href=\"" .$url. "?mois=$M_previous&annee=$annee_pre\" style=\"font-size:8px;\"><img src=\"images/left.jpg\" width=\"11\" height=\"11\" border=\"0\"/></a> Mois
<a href=\"" .$url. "?mois=$M_next&annee=$annee_next\" style=\"font-size:8px;\"><img src=\"images/right.jpg\" width=\"11\" height=\"11\" border=\"0\"/></a>
</td>
<td colspan=\"1\"></td>
<td colspan=\"3\">
<a href=\"" .$url. "?annee=$A_previous&mois=$mois\" style=\"font-size:8px;\"><img src=\"images/left.jpg\" width=\"11\" height=\"11\" border=\"0\"/></a>
Année <a href=\"" .$url. "?annee=$A_next&mois=$mois\" style=\"font-size:8px;\"><img src=\"images/right.jpg\" width=\"11\" height=\"11\" border=\"0\"/></a>
</td>
</tr>
</table>\n";
echo $AFF_cal ;
?>
voir le problème en direct
http://www.evdog.com/test.php
Bonjour,
Il y a quelques mois j'ai developper mon propre scripts calendrier dynamique, aujourd'hui je viens de me rendre compte qu'il ne fonctionne plus correctement , quelqu'un d'un niveau bien superieur au miens en php pourrait il m'expliquer mon erreur ?
j'ai aussi remarqué que la class que le membre [b]Cobaye [/b]avait posté sur le site section contribution fait exactement le même bug.
j'ai retirer tout le système dynamique du scripts pour le rendre plus lisible
un grand merci d'avance :wink:
ci-desous mon scripts
[php]
<?php
$url ="test.php";
// je déclare les variables de base jour mois annéee ou bien je les récupère via url
if(empty($mois)) $mois = date("m");
if(empty($annee)) $annee = date("Y");
if(empty($jour)) $jour = date("j");
$aff_mois = date("M",mktime(0,0,0,$mois,-1,$annee));
$aff_annee = date("Y",mktime(0,0,0,$mois,0,$annee));
$nb_jour_mois = date("t",mktime(0,0,0,$mois,1,$annee));
$premier_jour_du_mois = date("w",mktime(0,0,0,$mois,1,$annee));
$aujourdhui = date('j');
$jourdelasemaine = date('w', mktime(0,0,0,$mois,$jour,$annee));
$datefinmois= date("Y-m-d", mktime(0,0,0,$mois,$jour,$annee));
if( $mois < 10 ){ $news_mois = "0".$mois; }else{ $news_mois = $mois; }
$condition1 = "$annee-$news_mois-00";
$condition2 = "$annee-$news_mois-$nb_jour_mois";
$result = checkdate("$annee","$news_mois","$nb_jour_mois");
$date = time();
$new_annee = strftime("%G", $DB_Date_info);
$AFF_cal.= "<table style=\"font-size:11px;\">
<tr>
<td colspan=\"7\" style=\"color:#FFFFFF; padding:10px; height:30px; text-align:center;\"><span class=\"titre2\" >".$aff_mois. " " .$annee."</span></td></tr>
<tr style=\"color:#FFFFFF; background-color:#000000; padding:2px; height:25px; text-align:center; \">
<td> lu </td>
<td> ma </td>
<td> me </td>
<td> je </td>
<td> ve </td>
<td> sa </td>
<td> di </td>
</tr>\n";
$cell=0;
$week=0;
$casevide = 0; // jour de la semaine démarre à 0
$newsdate= 1;
for( $e=0; $e < $nb_jour_mois + $premier_jour_du_mois - 1 ; $e++ ){
$casevide++;
$week++;
if($casevide >= $premier_jour_du_mois){
if( $week >= 6 ){
// style en week end
if($newsdate == $aujourdhui && date("Y") == $annee && date("m") == $mois){ // aujourd'hui en week end
$result[$e].= " style=\"color:RED; background-color:#FFFFFF; padding:1px; border: 0px solid #004E99; width:20px; height:25px; text-align:center; \">$newsdate " .$even[$newsdate][$mois][$annee]."" .$even_mail[$newsdate][$mois][$annee]." ";
}else{
$result[$e].= " style=\"color:#FFFFFF; background-color:#003366; padding:1px; border: 0px solid #004E99; width:20px; height:25px; text-align:center; \">$newsdate " .$even[$newsdate][$mois][$annee]."" .$even_mail[$newsdate][$mois][$annee]." ";
}
($week == 7)? $week=0 : "";
}else if($newsdate == $aujourdhui && date("Y") == $annee && date("m") == $mois){ // aujourd'hui
if( $week >= 6 ){ // aujourd'hui et en week end
$result[$e].=" style=\"color:#003366; background-color:#ffffff; padding:1px; border: 0px solid #000000; width:20px; height:25px; text-align:center; \">".$newsdate;
}
}else{
$result[$e].=" style=\"color:#003366; background-color:#84A1BE; padding:1px; border: 0px solid #009900; width:20px; height:25px; text-align:center; \">$newsdate " .$even[$newsdate][$mois][$annee]."" .$even_mail[$newsdate][$mois][$annee]." ";
}
$newsdate++;
}else{
$result[$e].="";
}
}
//génère le calendrier
for( $n = 0 ; $n < $nb_jour_mois + $premier_jour_du_mois ; $n++ ) {
$AFF_cal.= ($cell == 0)? "<tr>\n" : "";
$AFF_cal.= ($result[$n]!="")? "<td ".$result[$n]."</td>\n" : "<td> </td>\n";
$cell ++;
$AFF_cal.= ($cell == 7)? "</tr>\n" : "";
$cell = ($cell == 7)? 0 : $cell;
}
// je déclare mes variable anne pour la navigation
$annee_pre = $annee;
$annee_next = $annee;
// je paramaitre ma navigation par mois
if($mois==1){
$M_previous = 12;
$annee_pre = $annee_pre -1;
}else{
$M_previous = $mois - 1;
}
if($mois==12){
$M_next = 1 ;
$annee_next = $annee_next +1;
}else{
$M_next = $mois + 1;
}
// je paramètre ma navigation par année
$A_previous = $annee - 1 ;
$A_next = $annee + 1 ;
$AFF_cal.= "
<tr style=\"color:#FFFFFF; background-color:#003366; padding:2px; height:25px; text-align:center;\">
<td colspan=\"3\">
<a href=\"" .$url. "?mois=$M_previous&annee=$annee_pre\" style=\"font-size:8px;\"><img src=\"images/left.jpg\" width=\"11\" height=\"11\" border=\"0\"/></a> Mois
<a href=\"" .$url. "?mois=$M_next&annee=$annee_next\" style=\"font-size:8px;\"><img src=\"images/right.jpg\" width=\"11\" height=\"11\" border=\"0\"/></a>
</td>
<td colspan=\"1\"></td>
<td colspan=\"3\">
<a href=\"" .$url. "?annee=$A_previous&mois=$mois\" style=\"font-size:8px;\"><img src=\"images/left.jpg\" width=\"11\" height=\"11\" border=\"0\"/></a>
Année <a href=\"" .$url. "?annee=$A_next&mois=$mois\" style=\"font-size:8px;\"><img src=\"images/right.jpg\" width=\"11\" height=\"11\" border=\"0\"/></a>
</td>
</tr>
</table>\n";
echo $AFF_cal ;
?>[/php]
voir le problème en direct
http://www.evdog.com/test.php