problème mktime je supose

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : problème mktime je supose

par dogmongo » 07 févr. 2009, 11:36

oui tu as raison, les autres mois je n'ai pas eu de problème, ce mois si le premier jour tombe un dimanche et ca foire :!: bizzare


je ré-edit mon message
j'ai trouvé l'erreur :

si quelqu'un veut ce servir de mon scripts qu'il remplace
$premier_jour_du_mois = date("w",mktime(0,0,0,$mois,$jour,$annee));
par
(date("w",mktime(0,0,0,$mois,$jour,$annee))==6)? $premier_jour_du_mois= 7:$premier_jour_du_mois = date("w",mktime(0,0,0,$mois,1,$annee));
la fonction date("w"... renvoi 6 quand le premier jour de la semaine commence un dimanche ce qui fausse le résultat, une simple condition à suffit à recaler tout ca :wink:

Merci jojolapine tu ma bien aidé sur ce coup :wink:

par jojolapine » 07 févr. 2009, 00:02

A mon avis, c'est justement cette différence qui fausse ton calendrier, je n'ai pas regardé en détail ta manière de faire, mais en anglais (et don en programmation en général) les semaines commencent le dimanche, d'ou l'erreur que tu as...

par dogmongo » 06 févr. 2009, 23:57

Oui tu as raison, j'ai été induit en erreur à cause de la disposition qui est diffère de la mienne, en tout cas ca ne change rien et n'arrange pas mon problème :)

par jojolapine » 06 févr. 2009, 23:12

Et quel est ce bug dont tu parles?
Le calendrier de Cobaye ne souffre pas de bugs connus...
Regarde la différence entre http://www.olecorre.com/calendar/ et http://www.evdog.com/test.php?mois=2&annee=2009
On voit que tu as tes jours du mois décalé de 1 par rapport aux jours de la semaine...

problème mktime je supose

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 :wink:

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