Bonsoir,

J'ai un problème plutôt hallucinant: J'essaie de faire un calendrier scolaire pour une association ou les parents pourront cocher les jours ou leur(s) enfant(s) iront à la cantine.

J'ai donc suivi le tutoriel "Calendrier" de Grafikart en le modifiant un peu à ma guise... Mais j'ai un bug chelou !

Lorsque j'affiche une première fois, le jour d'une date, il m'affiche le bon chiffre
Par ex : Pour le 1er Septembre il m'affiche 2 pour Mardi
Mais après une transmission de la variable dans un tableau, il me décale de 2 ce jour !
Pour le 1er Septembre il m'affiche 4 pour Mercredi

BUG ou PAS BUG selon vous ? Dans les deux cas, n'hésitez pas à répondre ;)
Voici mon script :

        function maFonction(){
            $year1 = '2015';
            $year2 = '2016';
            $date = new \DateTime($year1.'-09-01');
             while($date->format('m') <= '08' || $date->format('Y') <= $year2){
                $m = $date->format('m');
                $d = $date->format('d');
                $w = $date->format('w');
                // M'affiche 02 (Mardi) pour le 1er septembre 2015 par ex
                var_dump($w);

                $c[$m][$d] = $w;
                $date->add(new \DateInterval('P1D'));
             }
        return $c;
        }

        // BUUUG ! M'affiche 04 (Jeudi) pour le 1er septembre 2015
        var_dump($c);

2 réponses


Grafikart
Réponse acceptée

ton second var_dump étant hors de la boucle il va t'afficher le dernier jour qu'il a trouvé, donc (Jeudi) pour le 1er septembre 2016

tbm
Auteur
Réponse acceptée

Désolé du double post mais tu as raison Grafikart O_o.

Après avoir lu et relu ton post, il semble me prendre le septembre de 2016 et non de 2015 !
Du coup il me met 4.

Mais je ne comprends pas alors pourquoi est stocké le 4 (Jeudi) de 2016 alors que dans la boucle, quand je var_dump($w); il me met bien le 2.
Comment éviter cela ?

EDIT : En imprimant toute les dates de mon calendrier, j'ai remarqué que mon calendrier s'arrêtait en 2017 et non en 2016.
L'année 2016 réecrivait par dessus l'année 2015

Problème résolu.
Merci :)