首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > PHP >

极奇怪的,晓得bug在哪里,但不知道为何会出现这bug

2012-08-30 
极奇怪的,知道bug在哪里,但不知道为何会出现这bug?PHP code?phpclass calendar{private $yearprivate $m

极奇怪的,知道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;            }else{                $this->month=$this->month + 1;                        }            return 'year='.$this->year.'&month='.$this->month;                            }            } 




运行文件:
PHP code
<style>    table{        width:300px;        border:1px solid #050;        text-align:center;    }    .oneline{        color:white;        background:blue;            }</style><?php    include "calendar.php";    $calendar=new calendar();        $calendar->out();



这是一个制作日历的php小程序,请看我注释那2行,第一行很正常,而第二行运行的时候你会发现year是2011,而且总比表单中的year小一,但你看这2行中的方法竟然是一样的,奇怪吧?想了半天了,我投降了,菜鸟求高手解答;;

[解决办法]
你把$this->year 减1 了,当然表单中的year小一 啦,preYear() 改成如下:
PHP code
 private function preYear(){            $year=$this->year-1;                        if($year<1970){                $year=1970;            }            return "year={$year}&month={$this->month}";            } 

热点排行