日期:2014-05-17  浏览次数:20482 次

极奇怪的,知道bug在哪里,但不知道为何会出现这bug?
PHP code

<?php

    
    class calendar{
        private $year;
        private $month;
        private $daynum;
        private $start_day;
        
        function __construct(){
            $this->year=isset($_GET["year"])?$_GET["year"]:date("Y");
            $this->month=isset($_GET["month"])?$_GET["month"]:date("n");
            $this->daynum=date("t",mktime(0,0,0,$this->month,1,$this->year));
            $this->start_day=date("w",mktime(0,0,0,$this->month,1,$this->year));
            
            
        }
        
        function out(){
            echo '<table align="center">';
                $this->changecalendar();
                $this->daylist();
                $this->formset();
                
            echo '</table>';
        }
        
        
        function daylist(){
            $day=array('日','一','二','三','四','五','六','七');
            echo '<tr class="oneline">';
            for($i=0;$i<7;$i++){
                echo '<td>';
                    echo $day[$i];
                echo '</td>';
            }
            echo '</tr>';
        }
        
        
        function formset() {
            echo '<tr>';
            for($j=0; $j<$this->start_day; $j++)
                echo '<td>&nbsp;</td>';
                
                
                $k=$this->start_day;
            for($j=1;$j<=$this->daynum;$j++){
                if($j==date("j")){
                    echo '<td class="oneline">'.$j.'</td>';
                }else{
                    echo '<td>'.$j.'</td>';
                }
                $k++;
                if($k%7==0)
                    echo '</tr><tr>';
            
            }

        }
        
        
        private function changecalendar(){
            echo '<tr>';
//这个正常            echo '<td><a href="?'.$this->prevYear($this->year,$this->month).'">'.'<<'.'</a></td>';
//这个不正常            echo '<td><a href="?'.$this->preYear().'">'.'<<'.'</a></td>';
            echo '<td colspan="3">'.$this->year.'-'.$this->month.'</td>';

            
            echo '</tr>';
        }
        
        private function prevYear($year, $month){
            $year=$year-1;
            
            if($year < 1970)
                $year = 1970;

            return "year={$year}&month={$month}";    
        }
        
        
        private function preYear(){
            $this->year=$this->year-1;
            
            if($this->year<1970){
                $this->year=1970;
            }
            return "year={$this->year}&month={$this->month}";    
        }
        
        private function preMonth(){
            if($this->month == 1){
                $this->year=$this->year - 1;
                $this->month=12;
            }else{
                $this->month=$this->month-1;
            }
            echo "111";
            return 'year='.$this->year.'&month='.$this->month;            
        }
        
        private function nextYear(){
            $this->year=$this->year + 1;
            if($this->year>2038){
                $this->year=2038;
            }
            return 'year='.$this->year.'&month='.$this->month;
        }
        
        private function nextMonth(){
            if($this->month==12){
                $this->month=1;
                $this->year=$this->year + 1;
            }el