极奇怪的,知道bug在哪里,但不知道为何会出现这bug?
<?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> </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; } }
<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();
private function preYear(){ $year=$this->year-1; if($year<1970){ $year=1970; } return "year={$year}&month={$this->month}"; }