Petite erreur dans calendrier dynamique javascript!!!

Résolu
joduak Messages postés 194 Date d'inscription lundi 11 juillet 2005 Statut Membre Dernière intervention 13 avril 2007 - 10 août 2005 à 17:30
joduak Messages postés 194 Date d'inscription lundi 11 juillet 2005 Statut Membre Dernière intervention 13 avril 2007 - 11 août 2005 à 11:12
Salut à vous, j'ai un gros problème sur mon calendrier.

copier coller le dans un fichier php et lancez le, vous verrez qu'il y a 2 ptites erreurs.

J'arrive pas à les résoudre je galère comme un ouf lol

je suis débutant.





<?



//choix des couleurs

$bgcolor="ffffff" ; // Couleur de fond

$daybgcolor="0000FF" ; // Couleur des jours de la semaine

$dombgcolor="FF0000" ; // Couleur du jour sélectionné

$dayholcolor="cccccc" ; // Couleur des WE



// Mois

$month[0] = "January" ;

$month[1] = "February" ;

$month[2] = "March" ;

$month[3] = "April" ;

$month[4] = "May" ;

$month[5] = "June" ;

$month[6] = "July" ;

$month[7] = "August" ;

$month[8] = "September" ;

$month[9] = "October" ;

$month[10] = "November" ;

$month[11] = "December" ;



// Première lettre des jours de la semaine

$day[0] = "S" ;

$day[1] = "M" ;

$day[2] = "T" ;

$day[3] = "W" ;

$day[4] = "T" ;

$day[5] = "F" ;

$day[6] = "S" ;



$error01 = "Error : invalide date"



?>

<html>

<head>

<style>

#general

{

font-family: Arial;

font-size: 10pt;

}



a:link,a:active,a:visited

{

text-decoration:none;

color:#000000;

}



a:hover

{

text-decoration:underline;

color:#000000;

}



</style>

<script language='JavaScript'>

window.resizeTo(200,270) ;

function modifier (jour)

{

window.location.href = "mycalendar.php?form=<?echo
$form;?>&elem=<?echo $elem;?>&mois=" +
document.forms["MyCalendar"].elements['month'].options[document.forms["MyCalendar"].elements['month'].selectedIndex].value
+ "&jour=" + jour +"&annee=" +
document.forms["MyCalendar"].elements['year'].options[document.forms["MyCalendar"].elements['year'].selectedIndex].value



}

<?

if (!isset($jour))

$jour = date("j") ;



if (!isset($mois))

$mois = date("m") ;



if (!isset($annee))

$annee = date("Y") ;



// nombre de jours par mois

$nbjmonth[0] = 31 ;

$nbjmonth[1] = ($annee%4==0?($annee%100==0?($annee%400?29:28):29):28) ;

$nbjmonth[2] = 31 ;

$nbjmonth[3] = 30 ;

$nbjmonth[4] = 31 ;

$nbjmonth[5] = 30 ;

$nbjmonth[6] = 31;

$nbjmonth[7] = 31 ;

$nbjmonth[8] = 30 ;

$nbjmonth[9] = 31 ;

$nbjmonth[10] = 30 ;

$nbjmonth[11] = 31 ;



if(!checkdate($mois,$jour,$annee))

{

echo "alert('$error01')\n" ;

$jour = date("j") ;

$mois = date("m") ;

$annee = date("Y") ;

}



// Calcul du jour julien et du numéro du jour

$HR = 0;

$GGG = 1;

if( $annee < 1582 ) $GGG = 0;

if( $annee <1582 && $mois < 10 ) $GGG 0;

if( $annee <1582 && $mois 10 && 1 < 5 ) $GGG = 0;

$JD = -1 * floor(7 * (floor(($mois + 9) / 12) + $annee) / 4);

$S = 1;

if (($mois - 9)<0) $S=-1;

$A = abs($mois - 9);

$J1 = floor($mois + $S * floor($A / 7));

$J1 = -1 * floor((floor($J1 / 100) + 1) * 3 / 4);

$JD = $JD + floor(275 * $mois / 9) + 1 + ($GGG * $J1);

$JD = $JD + 1721027 + 2 * $GGG + 367 * $annee - 0.5;







/*$tmp = ((int)(($mois>2?$annee:$annee-1)/100)) ;

$jj = (int)((((int)(365.25*($mois>2?$annee:$annee-1))) +
((int)(30.6001*($mois>2?$mois+1:$mois+13))) + $jour + 1720994.5 +
($annee > 1582 && $mois > 10 && $jour >
15?2-$tmp+((int)($tmp/4)):0))) ;

$jj = (int)(($jj) % 7)*/

$jj = (($JD+.5)%7) ;

?>

</script>

</head>

<?

echo "\n" ;



echo "<center><form name='MyCalendar'>\n" ;

echo "\n\" ;

// Affichage de la sélection du mois et de l'année

echo \"<select name='month' onChange=\"modifier($jour)\">\n" ;

for ($i=0;$i<12;$i++)

{

echo "<option value='".($i+1)."'".($mois==($i+1)?" selected":"").">".$month[$i]."</option>\n" ;

}

echo "</select>, \n\" ;

echo \"<select name='year' onChange=\"modifier($jour)\">\n" ;

$y = date("Y") ;

for ($i=$y-10;$i<$y+10;$i++)

{

echo "<option value='$i'".($annee==($i)?" selected":"").">$i</option>\n" ;

}

echo "</select>, ----
&nbsp;, \n\" ;

echo \"----
<table width='100%' cellspacing='0' cellspading='0' border='0'>\n" ;

echo "----
\n" ;

// Affichage des jours

for($i=0;$i<7;$i++)

{

echo ", \".$day[$i].\"</td>\" ;

}

echo \"\n----
, \n----
\n\" ;

// Première ligne des jours

$j = $jj ;//date (\"w\", mktime (0,0,0,$mois,1,$annee)) ;

$dom = 1 ;

for ($i=0;$i<7;$i++)

{

if ($j<=$i)

{

echo \"".$dom++.", \n\" ;

}

else

echo \"&nbsp;, \n\" ;

}

echo \"\n\" ;

// Le reste

for ($i=0;$i<5;$i++)

{

echo \"----
\n\" ;

for ($j=0;$j<7;$j++)

{

$j_inac = ($j==0 || $j==6) ;

if($dom < $nbjmonth[($mois-1)])

echo
\"".$dom++.", \n\" ;

else if (checkdate($mois,$dom,$annee))

echo
\"".$dom++.", \" ;

else

echo \"&nbsp;, \n\" ;

}

echo \"\n\" ;

}

echo \"----
&nbsp;&nbsp;
" ;



echo "\n</tr></table>\n" ;



echo "</td></tr></table>" ;

echo "</form></center>" ;



echo "\n" ;

?>

</html>

13 réponses

arnal69130 Messages postés 445 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 22 mars 2007 2
11 août 2005 à 10:14
C'est encore parce que tu n'utilises pas $_GET pour lire tes variables passées dans l'url :

if (!isset($jour))
$jour = date("j") ;

A remplacer par :

if (!isset($_GET['jour']))
$jour = date("j") ;
else
$jour=$_GET[jour'];

idem pour mois et annee...
3
arnal69130 Messages postés 445 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 22 mars 2007 2
10 août 2005 à 17:39
Salut,
Tu veux pas nous les donner plutôt les erreurs ?
Tu sais que t'es en train de réinventer l'eau chaude avec toutes tes manipulations de date... si c'est pour t'entrainer, c'est bien, sinon regrde la doc php sur les dates

Arn;o)
0
joduak Messages postés 194 Date d'inscription lundi 11 juillet 2005 Statut Membre Dernière intervention 13 avril 2007
10 août 2005 à 18:03
yop les erreurs sont les suivantes:



Notice: Undefined variable: form in c:\mycalendar.php on line 182



Notice: Undefined
variable: elem in c:\mycalendar.php on line 182



Voilà je ne comprends pas pourquoi ça ne veut pas marcher!



merci!
0
joduak Messages postés 194 Date d'inscription lundi 11 juillet 2005 Statut Membre Dernière intervention 13 avril 2007
10 août 2005 à 18:08
ça pointe donc sur la 11eme ligne en partant de la fin de ce que je vous ai envoyé!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
arnal69130 Messages postés 445 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 22 mars 2007 2
10 août 2005 à 18:31
En fait, il faut vérifier que les variable $form et $elem existe avant de les utiliser (if (!empty($form))... ou plus simple, les initialiser à vide au début de ton script : $form=''; et $elem='';
Attention, il faut utiliser <?php à la place de <?.
Arn;o)
0
arnal69130 Messages postés 445 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 22 mars 2007 2
10 août 2005 à 18:33
Au fait, si ça peut t'aider, j'avais fait un calendrier dans le genre... http://www.phpcs.com/code.aspx?ID=30101
0
joduak Messages postés 194 Date d'inscription lundi 11 juillet 2005 Statut Membre Dernière intervention 13 avril 2007
10 août 2005 à 20:51
merci beaucoup arnal!!
Il me reste juste un ptit bug, qd je clique sur un jour il ne veut pas valider mon choix, il reste sur le popup!
erf!!
0
joduak Messages postés 194 Date d'inscription lundi 11 juillet 2005 Statut Membre Dernière intervention 13 avril 2007
10 août 2005 à 21:11
Merci pour ta réponse tu es super sympa!
J'ai fait comme tu as dit, j'ai initialisé à vide $form et $elem il n'y a plus d'erreur en effet, mais...
il y a toujours un mais lol, quand je clique sur une autre date il rafraichit la page mais ne charge pas les nouvelles valeurs, pourtant le code est logique lol.
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
10 août 2005 à 22:22
Salut,



remplace par $_GET['elem'] et $_GET['form'] ou encore essaie $_POST['elem'] ou $_POST['form']



attention de bien tester avec isset l'existence de ces variables avant :



if(isset($_GET['elem']))

{

echo $_GET['elem'];

}

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
0
joduak Messages postés 194 Date d'inscription lundi 11 juillet 2005 Statut Membre Dernière intervention 13 avril 2007
11 août 2005 à 00:02
j'avais essayé le GET mais bon ça enlève juste l'erreur.
Mais la date ne change pas lorsque l'on clique sur un autre jour.
On ne peut selectionner que la date du jour!! c ouf!
les variables sont bloquées...
0
joduak Messages postés 194 Date d'inscription lundi 11 juillet 2005 Statut Membre Dernière intervention 13 avril 2007
11 août 2005 à 10:27
YEAHHHHHHHHHHHHHHH ARNAL69130 TU DECHIRESSSSSSS! !!! ! ! !! ! !
T un OUFFF!
;)
MERCI MERCI MERCI 1000* lol
0
arnal69130 Messages postés 445 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 22 mars 2007 2
11 août 2005 à 11:09
Content d'avoir pu t'aider .
N'oublie pas de regarder les fonctions date de php...

Par exemple,

Au lieu de remplir un tableau avec le nom des mois, tu peux utiliser ça :
function nomMois($mon)
{ return ucfirst(strftime("%B",strtotime("2002".sprintf("%02d",$mon)."01"))); }

idem pour les jours :
function nomJour($d)
{ return ucfirst(strftime("%A",strtotime("200408".sprintf("%02d",$d+1)))); }

Ensuite, il est inutile de rentrer manuellement le nombre de jours des mois
$nbj=strftime("%d",mktime(8,0,0,$mois+1,0,$an)); => nombre de jour du mois $mois de l'année $an
$d1j=strftime("%w",strtotime($an.$mois."01")); => jour de la semaine du 1er du mois
...

Bonne continuation.
Arn;o)
0
joduak Messages postés 194 Date d'inscription lundi 11 juillet 2005 Statut Membre Dernière intervention 13 avril 2007
11 août 2005 à 11:12
merci de tes précieux conseils. J'en prends note!!
Merci pour tout !!
0
Rejoignez-nous