Bonjour,
Il faut enlever les 0 non significatif lors de l'affection de la variable $fin_mois, l'erreur viens de la.
Pourquoi ? j'avoue que je n'ai pas la réponse et que je suis intéréssé de la connaitre.
EDIT: en recherchant integer sur la doc php.net, il est écrit, je cite:
"Les entiers peuvent être spécifiés en notation décimale (base 10), hexadécimale (base 16), octale (base 8), ou binaire (base 2) optionnellement précédée d'un signe (- ou +)."
et:
"Pour utiliser la notation octale, précédez le nombre d'un 0 (zéro)"
donc pour résoudre ton probleme soit tu suprime le 0 avant les valeur inferieur a 10 soit tu affecte la valeur comme une chaine de caractere (i.e $fin_mois = "08")
Peut tu m'expliquer pourquoi tu tiens a mettre un 0 avant?
Si c'est pour formater la date tu n'as pas besoin de faire sa. effectivement tu utilise la fonction mktime() qui calcul un timestamp("Ce timestamp est un entier long, contenant le nombre de secondes entre le début de l'époque UNIX (1er Janvier 1970 00:00:00 GMT) et le temps spécifié") avec les argument que tu lui passe.
dans le temps en seconde qui est calculé tes 0 non significatif n'ont vraiment plus de signification . et sur ce timestamp tu applique la fonction date qui sert a formater un timestamp:
le premier argument de la fonction date est le format (i.e "Y-m-d") le m dans ta chaine de caractere signifie "Mois au format numérique, avec zéros initiaux" "01 à 12" c'est la fonction qui ajoute le 0 pas toi, le fromatage n'est pas de ton ressort puique tu utilise une fonction pour le faire.
Au fait, un switch() serait un peu plus propre ou au moins if(){....} else if(){....} else{....}
dans ton code tu test si la variable est égale a une valeur mais quand la condition est vraie tu continue de verifier si elle n'est pas égale au autre, c'est une perte de temps puisque $fin_mois n'est égale qu'a une et une seul valeur.
Nicolas,
Partager