par
niconicochan » 12 sept. 2014, 11:55
Pour ce qui est des fonction à déclarer, je fais un simple papier/coller
de toutes mes fonctions déclarées dans mon formulaire
(il s'agit en effet exactement des mêmes fonctions que j'ai besoin de déclarer).
Je recoller ces fonctions en haut de mon fichier php, ce qui donne pour mon fichier php:
<?php
//nouvelle déclaration de mes fonctions
function getSecond($valeur) {
return substr($valeur, 17, 2);
}
function getMinute($valeur) {
return substr($valeur, 14, 2);
}
function getHour($valeur) {
return substr($valeur, 11, 2);
}
function getDay($valeur) {
return substr($valeur, 8, 2);
}
function getMonth($valeur) {
return substr($valeur, 5, 2);
}
function getYear($valeur) {
return substr($valeur, 0, 4);
}
function monthNumToName($mois) {
$tableau = Array("", "Janvier", "Février",
"Mars", "Avril", "Mai", "Juin", "Juillet",
"Aôut", "Septembre", "Octobre", "Novembre", "Décembre");
return (intval($mois) > 0 && intval($mois)
< 13) ? $tableau[intval($mois)] : "Indéfini";
}
function showCalendar($periode) { //accolade d'ouverture 1
$leCalendrier = "";
# Tableau des valeurs possibles pour un numéro
# de jour dans la semaine
$tableau = Array("0", "1", "2", "3", "4", "5", "6", "0");
$nb_jour = Date("t", mktime(0, 0, 0, getMonth($periode),
1, getYear($periode)));
$pas = 0;
$indexe = 1;
# Affichage du mois et de l'année
$leCalendrier .= "<h2>" . monthNumToName
(getMonth($periode)) . " " . getYear($periode) . "</h2>";
# Affichage des entêtes
$leCalendrier .= "
<ul id=\"libelle\">
\t<li> L</li>
\t<li> M</li>
\t<li> M</li>
\t<li> J</li>
\t<li> V</li>
\t<li> S</li>
\t<li> D</li>
</ul>";
# Tant que l'on n'a pas affecté tous les jours du mois traité
while ($pas < $nb_jour) { //accolade d'ouverture 2
if ($indexe == 1) $leCalendrier .=
"\n\t<ul class=\"ligne\">";
# Si le jour calendrier == jour de la semaine en cours
if (Date("w", mktime(0, 0, 0, getMonth($periode),
1 + $pas, getYear($periode))) == $tableau[$indexe]) { //accolade d'ouverture 3
# Si jour calendrier == aujourd'hui
$afficheJour = Date("d", mktime(0, 0, 0,
getMonth($periode), 1 + $pas, getYear($periode)));
if (Date("Y-m-d", mktime(0, 0, 0, getMonth($periode),
1 + $pas, getYear($periode))) == Date("Y-m-d")) { //accolade d'ouverture 4
$class = " class=\"itemCurrentItem\"";
} //accolade de fermeture 4
else { //accolade d'ouverture 4 else
# 1 est toujours vrai => on affiche
# un lien à chaque fois
# A vous de faire les tests
# nécessaire si vous gérer un agenda par exemple
if (1) { //accolade d'ouverture 5
$class = " class=\"itemExistingItem\"";
$var_j = Date("d", mktime(0, 0, 0, getMonth($periode), 1 + $pas, getYear($periode)));
$var_am = Date("Y-m", mktime(0, 0, 0, getMonth($periode), 1 + $pas, getYear($periode))); #code rajouté pour avoir l'année et le mois courants
$afficheJour = "<input type=\"button\" name=\"datejour\" value=\"" . $var_j . "\" onClick=\"date_id_jour.value=this.value; date_id_annee_mois.value='" . $var_am . "' \">";
} //accolade de fermeture 5
else { //accolade d'ouverture 5 else
$class = "";
} //accolade de fermeture 5 else
} //accolade de fermeture 4 else
# Ajout de la case avec la date
$leCalendrier .= "\n\t\t<li$class>
$afficheJour</li>";
$pas++;
} //accolade de fermeture 3
else { //accolade d'ouverture 3 else
# Ajout d'une case vide
$leCalendrier .= "\n\t\t<li> </li>";
} //accolade de fermeture 3 else
if ($indexe == 7 && $pas < $nb_jour)
{ $leCalendrier
.= "\n\t</ul>"; $indexe = 1;} else {$indexe++;}
} //accolade de fermeture 2
# Ajustement du tableau
for ($i = $indexe; $i <= 7; $i++) { //accolade d'ouverture 6
$leCalendrier .= "\n\t\t<li> </li>";
} //accolade de fermeture 6
$leCalendrier .= "\n\t</ul>\n";
# Retour de la chaine contenant le Calendrier
return $leCalendrier;
} //accolade de fermeture 1
//fin de nouvelle déclaration de mes fonctions
if (!empty($_POST['operation']) && !empty($_POST['periode'])) {
//extraction des variables
$periode = htmlentities($_POST['periode']);
$month = getMonth($periode);
$year = getYear($periode);
$operation = $month + htmlentities($_POST['operation']);
//Calcul de la période après modification du mois
$periode = date("Y-m-d",mktime(0,0,0,$operation,1,$year));
//Affichage de la réponse pour ajax: calendrier + champs hidden (utile pour le formulaire ET l'ajax)
showCalendar($periode);
echo '<input type="hidden" name="date_id_annee_mois" id="date_id_annee-mois" value="',$year,'-',$month,'" />
<input type="hidden" name="date_id_jour" id="date_id_jour" value="01" />';
}
?>
Voilà ce que ça donne déjà pour mon fichier php.
Le navigateur veut aussi que je déclare la fonction showCalendar.
C'est pour cela que j'ai pensé à tout reprendre, du coup.
Mais ça fait beaucoup d'informations non.
J'ai en fait d'abord essayé quelquechose comme:
function getDay($date){
$valeurD = date("d");
return substr($valeurD, 8, 2);
}
function getMonth($date) {
$valeurM = date("m");
return substr($valeurM, 5, 2);
}
function getYear($date){
$valeurY = date("Y");
return substr($valeurY, 0, 4);
}
pour réduire mon code, mais le navigateur m'a alors demandé de déclarer aussi le calendrier...
1) Voilà, je ne sais pas si on peut déjà regarder le fichier php?
2) A propos, c'est quoi mp?
mot de passe? mettre le fichier en PJ?
Par rapport à ma question:
Est-ce que je dois déclarer ma variable $periode dans mon fichier js pour qu'elle soit reconnue?
si j'ai bien compris la réponse est oui, mais sa déclaration est reprise par:
[javascript]
document.getElementById('boutonprec').addEventListener('click',function() { getAJAXmois(document.getElementById('date_id_annee-mois').value,-1) }, false);
document.getElementById('boutonsuiv').addEventListener('click',function() { getAJAXmois(document.getElementById('date_id_annee-mois').value,1) }, false);
[/javascript]
3) donc rien de plus à rajouter, c'est bien ça?
4) ...donc pas besoin de mettre la variable période dans un div comme on le fait habituellement pour récupérer le div en question avec
var leDivEnQuestion = document.getElementById('leDivEnQuestion');
puisque c'est déjà fait dans
[javascript]
document.getElementById('boutonprec').addEventListener('click',function() { getAJAXmois(document.getElementById('date_id_annee-mois').value,-1) }, false);
document.getElementById('boutonsuiv').addEventListener('click',function() { getAJAXmois(document.getElementById('date_id_annee-mois').value,1) }, false);
[/javascript]
C'est ça?
Pour ce qui est des fonction à déclarer, je fais un simple papier/coller
de toutes mes fonctions déclarées dans mon formulaire
(il s'agit en effet exactement des mêmes fonctions que j'ai besoin de déclarer).
Je recoller ces fonctions en haut de mon fichier php, ce qui donne pour mon fichier php:
[php]
<?php
//nouvelle déclaration de mes fonctions
function getSecond($valeur) {
return substr($valeur, 17, 2);
}
function getMinute($valeur) {
return substr($valeur, 14, 2);
}
function getHour($valeur) {
return substr($valeur, 11, 2);
}
function getDay($valeur) {
return substr($valeur, 8, 2);
}
function getMonth($valeur) {
return substr($valeur, 5, 2);
}
function getYear($valeur) {
return substr($valeur, 0, 4);
}
function monthNumToName($mois) {
$tableau = Array("", "Janvier", "Février",
"Mars", "Avril", "Mai", "Juin", "Juillet",
"Aôut", "Septembre", "Octobre", "Novembre", "Décembre");
return (intval($mois) > 0 && intval($mois)
< 13) ? $tableau[intval($mois)] : "Indéfini";
}
function showCalendar($periode) { //accolade d'ouverture 1
$leCalendrier = "";
# Tableau des valeurs possibles pour un numéro
# de jour dans la semaine
$tableau = Array("0", "1", "2", "3", "4", "5", "6", "0");
$nb_jour = Date("t", mktime(0, 0, 0, getMonth($periode),
1, getYear($periode)));
$pas = 0;
$indexe = 1;
# Affichage du mois et de l'année
$leCalendrier .= "<h2>" . monthNumToName
(getMonth($periode)) . " " . getYear($periode) . "</h2>";
# Affichage des entêtes
$leCalendrier .= "
<ul id=\"libelle\">
\t<li> L</li>
\t<li> M</li>
\t<li> M</li>
\t<li> J</li>
\t<li> V</li>
\t<li> S</li>
\t<li> D</li>
</ul>";
# Tant que l'on n'a pas affecté tous les jours du mois traité
while ($pas < $nb_jour) { //accolade d'ouverture 2
if ($indexe == 1) $leCalendrier .=
"\n\t<ul class=\"ligne\">";
# Si le jour calendrier == jour de la semaine en cours
if (Date("w", mktime(0, 0, 0, getMonth($periode),
1 + $pas, getYear($periode))) == $tableau[$indexe]) { //accolade d'ouverture 3
# Si jour calendrier == aujourd'hui
$afficheJour = Date("d", mktime(0, 0, 0,
getMonth($periode), 1 + $pas, getYear($periode)));
if (Date("Y-m-d", mktime(0, 0, 0, getMonth($periode),
1 + $pas, getYear($periode))) == Date("Y-m-d")) { //accolade d'ouverture 4
$class = " class=\"itemCurrentItem\"";
} //accolade de fermeture 4
else { //accolade d'ouverture 4 else
# 1 est toujours vrai => on affiche
# un lien à chaque fois
# A vous de faire les tests
# nécessaire si vous gérer un agenda par exemple
if (1) { //accolade d'ouverture 5
$class = " class=\"itemExistingItem\"";
$var_j = Date("d", mktime(0, 0, 0, getMonth($periode), 1 + $pas, getYear($periode)));
$var_am = Date("Y-m", mktime(0, 0, 0, getMonth($periode), 1 + $pas, getYear($periode))); #code rajouté pour avoir l'année et le mois courants
$afficheJour = "<input type=\"button\" name=\"datejour\" value=\"" . $var_j . "\" onClick=\"date_id_jour.value=this.value; date_id_annee_mois.value='" . $var_am . "' \">";
} //accolade de fermeture 5
else { //accolade d'ouverture 5 else
$class = "";
} //accolade de fermeture 5 else
} //accolade de fermeture 4 else
# Ajout de la case avec la date
$leCalendrier .= "\n\t\t<li$class>
$afficheJour</li>";
$pas++;
} //accolade de fermeture 3
else { //accolade d'ouverture 3 else
# Ajout d'une case vide
$leCalendrier .= "\n\t\t<li> </li>";
} //accolade de fermeture 3 else
if ($indexe == 7 && $pas < $nb_jour)
{ $leCalendrier
.= "\n\t</ul>"; $indexe = 1;} else {$indexe++;}
} //accolade de fermeture 2
# Ajustement du tableau
for ($i = $indexe; $i <= 7; $i++) { //accolade d'ouverture 6
$leCalendrier .= "\n\t\t<li> </li>";
} //accolade de fermeture 6
$leCalendrier .= "\n\t</ul>\n";
# Retour de la chaine contenant le Calendrier
return $leCalendrier;
} //accolade de fermeture 1
//fin de nouvelle déclaration de mes fonctions
if (!empty($_POST['operation']) && !empty($_POST['periode'])) {
//extraction des variables
$periode = htmlentities($_POST['periode']);
$month = getMonth($periode);
$year = getYear($periode);
$operation = $month + htmlentities($_POST['operation']);
//Calcul de la période après modification du mois
$periode = date("Y-m-d",mktime(0,0,0,$operation,1,$year));
//Affichage de la réponse pour ajax: calendrier + champs hidden (utile pour le formulaire ET l'ajax)
showCalendar($periode);
echo '<input type="hidden" name="date_id_annee_mois" id="date_id_annee-mois" value="',$year,'-',$month,'" />
<input type="hidden" name="date_id_jour" id="date_id_jour" value="01" />';
}
?>
[/php]
Voilà ce que ça donne déjà pour mon fichier php.
Le navigateur veut aussi que je déclare la fonction showCalendar.
C'est pour cela que j'ai pensé à tout reprendre, du coup.
Mais ça fait beaucoup d'informations non.
J'ai en fait d'abord essayé quelquechose comme:
[php]
function getDay($date){
$valeurD = date("d");
return substr($valeurD, 8, 2);
}
function getMonth($date) {
$valeurM = date("m");
return substr($valeurM, 5, 2);
}
function getYear($date){
$valeurY = date("Y");
return substr($valeurY, 0, 4);
}
[/php]
pour réduire mon code, mais le navigateur m'a alors demandé de déclarer aussi le calendrier...
1) Voilà, je ne sais pas si on peut déjà regarder le fichier php?
2) A propos, c'est quoi mp?
mot de passe? mettre le fichier en PJ?
Par rapport à ma question:
Est-ce que je dois déclarer ma variable $periode dans mon fichier js pour qu'elle soit reconnue?
si j'ai bien compris la réponse est oui, mais sa déclaration est reprise par:
[javascript]
document.getElementById('boutonprec').addEventListener('click',function() { getAJAXmois(document.getElementById('date_id_annee-mois').value,-1) }, false);
document.getElementById('boutonsuiv').addEventListener('click',function() { getAJAXmois(document.getElementById('date_id_annee-mois').value,1) }, false);
[/javascript]
3) donc rien de plus à rajouter, c'est bien ça?
4) ...donc pas besoin de mettre la variable période dans un div comme on le fait habituellement pour récupérer le div en question avec
var leDivEnQuestion = document.getElementById('leDivEnQuestion');
puisque c'est déjà fait dans
[javascript]
document.getElementById('boutonprec').addEventListener('click',function() { getAJAXmois(document.getElementById('date_id_annee-mois').value,-1) }, false);
document.getElementById('boutonsuiv').addEventListener('click',function() { getAJAXmois(document.getElementById('date_id_annee-mois').value,1) }, false);
[/javascript]
C'est ça?