Probleme d'affichage du mois

Petit nouveau ! | 6 Messages

07 janv. 2006, 05:46

J'ai trouve un bug sur l'affichage du mois en toutes lettre et je me demande si vous avez la même chose chez vous.

Voici un code pour faire le test:
<?
$mois = array();
        $mois[1] = "Janvier";
        $mois[2] = "Février";
        $mois[3] = "Mars";
        $mois[4] = "Avril";
        $mois[5] = "Mai";
        $mois[6] = "Juin";
        $mois[7] = "Juillet";
        $mois[8] = "Août";
        $mois[9] = "Septembre";
        $mois[10] = "Octobre";
        $mois[11] = "Novembre";
        $mois[12] = "Décembre";
        echo '<p>Sa doit affiche décembre (time de decembre 2005)' . $mois[date('m', 1135716060)] . '</p>';
        echo '<p>Sa doit affiche le mois en cours de l année 2006' . $mois[(date('m')] . '</p>';
        echo '<p>Sa doit affiche touts les mois' . $mois[01];echo $mois[2];echo $mois[3];echo $mois[4];echo $mois[5];
        echo $mois[6];echo $mois[7];echo $mois[8];echo $mois[9];echo $mois[10];echo $mois[11];echo $mois[12] . '</p>';
?>

Le resultats devrait être
Sa doit affiche décembre (time de l année decembre 2005) Décembre

Sa doit affiche le mois en cours de l année 2006 Janvier

Sa doit affiche touts les mois JanvierFévrierMarsAvrilMaiJuinJuilletAoûtSeptembreOctobreNovembreDécembre

Pour moi, il s'affiche ceci :

Sa doit affiche décembre (time de l année decembre 2005) Décembre

Sa doit affiche le mois en cours de l année 2006

Sa doit affiche touts les mois JanvierFévrierMarsAvrilMaiJuinJuilletAoûtSeptembreOctobreNovembreDécembre
Il manque dans "Sa doit affiche le mois en cours de l année 2006 " Janvier

je ne vois pas pourquoi il y a ce problème. J'ai trouvé une solution :
<?$mois = array();
        $mois[11] = "Janvier";
        $mois[12] = "Février";
        $mois[13] = "Mars";
        $mois[14] = "Avril";
        $mois[15] = "Mai";
        $mois[16] = "Juin";
        $mois[17] = "Juillet";
        $mois[18] = "Août";
        $mois[19] = "Septembre";
        $mois[20] = "Octobre";
        $mois[21] = "Novembre";
        $mois[22] = "Décembre";
        echo '<p>Sa doit affiche décembre (time de l année decembre 2005)  ' . $mois[(date('m', 1135716060)+10)] . '</p>';
        echo '<p>Sa doit affiche le mois en cours de l année 2006  ' . $mois[(date('m', mktime(0, 0, 0, 1, 1, 2006))+10)] . '</p>';
        echo '<p>Sa doit affiche touts les mois  ' . $mois[11];echo $mois[12];echo $mois[13];echo $mois[14];echo $mois[15];
        echo $mois[16];echo $mois[17];echo $mois[18];echo $mois[19];echo $mois[20];echo $mois[21];echo $mois[22] . '</p>';
?>

Mammouth du PHP | 19672 Messages

07 janv. 2006, 10:01

Modération : Pas de questions dans la FAQ !

Au lieu d'utiliser date('m'), utilise date('n') de façon à ne pas avoir le zéro initial:
<?php
$mois = array();
$mois[1] = "Janvier";
$mois[2] = "Février";
$mois[3] = "Mars";
$mois[4] = "Avril";
$mois[5] = "Mai";
$mois[6] = "Juin";
$mois[7] = "Juillet";
$mois[8] = "Août";
$mois[9] = "Septembre";
$mois[10] = "Octobre";
$mois[11] = "Novembre";
$mois[12] = "Décembre";
echo "<p>Ça doit affiche décembre (time de decembre 2005) ". $mois[date('n', 1135716060)] ."</p>\n";
echo "<p>Ça doit affiche le mois en cours de l'année 2006 ". $mois[date('n')] ."</p>\n";
echo "<p>Ça doit affiche tous les mois ". $mois[1];
echo ", ". $mois[2];
echo ", ". $mois[3];
echo ", ". $mois[4];
echo ", ". $mois[5];
echo ", ". $mois[6];
echo ", ". $mois[7];
echo ", ". $mois[8];
echo ", ". $mois[9];
echo ", ". $mois[10];
echo ", ". $mois[11];
echo ", ". $mois[12] ."</p>\n";
?>
Et là tu auras:
Ça doit affiche décembre (time de decembre 2005) Décembre

Ça doit affiche le mois en cours de l'année 2006 Janvier

Ça doit affiche tous les mois Janvier, Février, Mars, Avril, Mai, Juin, Juillet, Août, Septembre, Octobre, Novembre, Décembre
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: