PHP date() 함수를 이용한 달력 소스

월 전환시 $_GET['number'] 입력값에 따라 페이지를 다시 읽어옵니다.
맨 마지막 location.href 주소만 수정해서 쓰면 됩니다.
결과

<?php
$number=$_GET['number'];
if(!$number){
 $number=date("Y/m/d"); // number값이 없으면 number에 yyyy/mm/dd형식으로 집어넣음
}
class OG_DATE{
 public $today;
 public $year;
 public $month; 
 public $end_day;
 public $f_day;
 
 function __construct($number){
        $this->today     = date($number);
 }

 function this_month(){  
  $this->year = substr($this->today,0,4);
  $this->month = substr($this->today,5,2);    
  
  if(substr($this->month,0,1) == 0){
   $this->month = substr($this->month,1,2);
  }
  
  $this->end_day = date('t',mktime(0,0,0,$this->month,1,$this->year)); //마지막일 알아내기 30 or 31 or 28 or 29일
  $this->f_day = date('D',mktime(0,0,0,$this->month,1,$this->year)); // 1일이 무슨 요일인지 알아내기
  return $this->year.'/'.$this->month;
 }
 
 function pre_month(){
  $year = $this->year;
  $month = $this->month;
  if($month == 1){ // 1월일 경우 (1년전 && 12월부터) 시작
   $month = 12;
   $year = (int)$year - 1;
  }
  else{
   $month -= 1;
  }
  $pre_month = $year . '/' . $month; // yyyy/m 형식으로 반환
  return $pre_month; 
 }
 
 function next_month(){
  $year = $this->year;
  $month = $this->month;
  if($month == 12){ //12월일 경우 (1년후 && 1월부터) 시작
   $month = 1;
   $year = (int)$year + 1;
  }
  else{
   $month += 1;
  }
  $next_month = $year . '/' . $month;
  return $next_month; 
 }
}
function move_month($url){ 
 return 'http://localhost/og/calendar.php?number=' . $url;
}

$og_date = new OG_DATE($number);
$og_date->this_month();

$day = array(Sun, Mon, Tue, Wed, Thu, Fri, Sat); // $og_date->f_day : 1일이 무슨 요일인지 알아냄
$s_month=array_search($og_date->f_day, $day);  // 알아낸 요일을 $day 매치시켜서 몇번째 배열인지 반환한다
$cell = 0; // <td>를 만들어준다 빈공간 포함
?>

    <style type="text/css">
        td{
            width: 100px;
            height: 100px;
            text-align: center;
            font-size: 20px;
            font-family: 굴림;
            border:1px solid #cdcdcd;            
        }
        a{
         text-decoration:none;
        }
    </style>

<table>
<tr>
 <td><a href="<?=move_month($og_date->pre_month()); ?>">&lt;</a></td>
 <td colspan=5><?=$og_date->year ?><?=$og_date->month ?>월 </td>
 <td><a href="<?=move_month($og_date->next_month()); ?>">&gt;</a></td>
</tr>
<tr>
 <td><font color="red">일</font></td>
 <td>월</td>
 <td>화</td>
 <td>수</td>
 <td>목</td>
 <td>금</td>
 <td><font color="blue">토</font></td>
</tr>

<?php
echo "<tr>";
for($i=0;$i<$s_month;$i++){
 echo "<td>"; 
 echo "</td>";
 $cell++;
}
for($j=1;$j<=$og_date->end_day;$j++){
 if($cell % 7 == 0){
  if($cell != 0){
   echo "</tr>";  
   echo "<tr>";
  }
  echo "<td><font color='red'>$j</font></td>";
 } 
 else if($cell % 7 == 6){
  echo "<td><font color='blue'>$j</font></td>";
 }
 else{
  echo "<td>$j</td>";
 }
 $cell++; 
}
?>
</tr>
</table>

댓글 쓰기

0 댓글