Bonjour à tous,
j'ai un souci d'affichage avec le calendrier du tuto du même nom et uniquement au mois de mai, 1e jour un dimanche ?
merci de votre aide.

6 réponses


bagui
Auteur
Réponse acceptée

j'ai trouvé la solution. Ouaaaaa !!!
en fait , je modifiais une variable $w pour le colspan sans changer son nom et apparemment cela faisait un conflit:

...
//$w = $w - 1;
$v_col = $w - 1;
$calendar .= '<td colspan="'.$v_col.'"></td>'.chr(13);
...

Il faudrait voir un peu de code car la dans avoir fait le tuto.
C'est peu être un pb de boucle

bagui
Auteur

voici mon code désolé c'est un peu à la pelle !

public function calendar(){

        $calendar = '';
        $year = date("Y");
        $dates = $this->getAllDays($year);
        $calendar .= '<div class="calendar">';

            $calendar .= '<div class="months">';
                $calendar .= '<ul>';
                $calendar .= '<li><a class="active" href="#" title="'.$year.'">'.$year.'</a></li>';
                foreach($this->months as $kMonth=>$m) :
                    $kMonth = $kMonth + 1;
                    $calendar .= '<li><a href="#" title="'.$m.'" id="linkMonth'.$kMonth.'">'.utf8_encode(substr(utf8_decode($m),0,3)).'</a></li>';
                endforeach;
                $calendar .= '</ul>';
            $calendar .= '</div>';
            // $calendar .= '<div class="clear"></div>';
            $dates = current($dates);
            foreach($dates as $m=>$days) :
                $calendar .= '<div class="month" id="month'.$m.'">';
                    $calendar .= '<table>';
                    $calendar .= '<thead>';
                        $calendar .= '<tr>';
                            foreach ($this->days as $d):
                                $calendar .= '<th>'.substr($d,0,3).'</th>';
                            endforeach;
                        $calendar .= '</tr>';
                        $calendar .= '</thead>';
                        $calendar .= '<tbody>';
                        $calendar .= '<tr>';
                            $end = end($days); 
                            foreach($days as $d=>$w):
                                $time = strtotime("$year-$m-$d");
                                if($d == 1 && $w != 1):
                                    $w = $w - 1;
                                    $calendar .= '<td colspan="'.$w.'"></td>';
                                endif;
                                $today = ($time == strtotime(date('Y-m-d'))) ? 'class="today"' : '';
                                $calendar .= '<td '.$today.'>';
                                    $calendar .= $d;
                                    $calendar .= '<div class="daytitle">'.$this->days$w-1].' '.$d.' '.$this->months$m-1].'</div>';
                               $calendar .= '</td>';
                               if($w == 7):
                                    $calendar .= '</tr><tr>';
                               endif;
                             endforeach;
                             if($end != 7):
                                $end = 7 - $end;
                                $calendar .= '<td colspan="'.$end.'" class="padding"></td>';
                             endif;
                             $calendar .= '</tr>';
                             $calendar .= '</tbody>';
                        $calendar .= '</table>';
                    $calendar .= '</div>';
                endforeach;
        $calendar .= '</div>';

        return $calendar;

    }

Sort un print_r($dates) pour voir :)

bagui
Auteur

voici le tableau $dates

Array
(
    [2011] => Array
        (
            ...
            [5] => Array
                (
                    [1] => 7
                    [2] => 1
                    [3] => 2
                    [4] => 3
                    [5] => 4
                    [6] => 5
                    [7] => 6
                    [8] => 7
                    [9] => 1
                    [10] => 2
                    [11] => 3
                    [12] => 4
                    [13] => 5
                    [14] => 6
                    [15] => 7
                    [16] => 1
                    [17] => 2
                    [18] => 3
                    [19] => 4
                    [20] => 5
                    [21] => 6
                    [22] => 7
                    [23] => 1
                    [24] => 2
                    [25] => 3
                    [26] => 4
                    [27] => 5
                    [28] => 6
                    [29] => 7
                    [30] => 1
                    [31] => 2
                )
...
        )
)
bagui
Auteur

en fait je remarque qu'il y a un décalage au niveau du numero du jour, entre le 1er et le 2ème
ex : mai le dernier jour de la première semaine est 6 alors que ca devrait etre 7
bizarre