YesYo.com MintState Forums
뒤로    YesYo.com MintState BBS > Tech > PHP
검색
멤버이름    오토
비밀번호 
 

달력클래스

페이지 정보

작성자 MintState 댓글 0건 조회 11,156회 작성일 08-10-29 17:13

본문

달력클래스

<? 
class seokhunCalendar 
{ 
        //일정에 관련된 변수들... 
        var $year; 
        var $month; 
        var $day; 
         
        //날짜와 날짜에 대한 정보....(뭔소린지 몰라요? 나두..ㅡ.ㅡ; 쉽고 좋은말 없남..ㅡ.ㅡ;;) 참고 [배열임] 
        var $m_days; 
        var $m_weeks0; 
        var $m_weeks1; 
         
        //에러값을 기록하는 변수 
        var $errmsg; 
         
        //리턴값 설정 
        var $TRUE = 1; 
        var $FALSE = 0; 
         
        //생성자..년/월/일 받아서 데이터 초기화 시킴 
        function seokhunCalendar($year, $month, $day) 
        { 
                //날짜 체크 
                if($month>12 || $month<1 || $day>31 || $day<1){ 
                        $this->errmsg = "날짜가 범위를 초과하였습니다."; 
                        return $FALSE; 
                } 
                 
                //2003-02-25이면 곤란하쟎아...타입 변환시킨다.. 
                $this->year = (int)$year; 
                $this->month = (int)$month; 
                $this->day = (int)$day; 
                 
                //변수 초기화 함수 콜~~~~ 
                $this->set_init(); 
                 
                return $TRUE;         
        }         

        //달력 만들기 
        function set_calendar() 
        { 
                echo "<br><b>[ $this->year-$this->month ]</b><br><br>"; 
                echo "<table border=1 cellpadding=5 cellspacing=0>"; 
                echo "<tr><td> </td>"; 
                 
                //먼저 날짜부터 찍는다. 
                for($i=1; $i < $this->m_days[$this->month-1] + 1; $i++) 
                        echo "<td><font size=-1>$i</font></td>";                         
                echo "</tr>"; 
                 
                //다 찍었으면 이제 요일을 찍는다. 찍기 전에 먼저 첫날의 요일을 알아야 한다. 
                echo "<tr><td> </td>"; 
                 
                $yoil = $this->get_first_yoil($this->month, $this->year); 
                for($i=0; $i<count($this->m_weeks0); $i++){ 
                        if($yoil == $this->m_weeks0[$i]) 
                                break; 
                } 
                //날자 찍장...ㅡ.ㅡ;;; 
                for($k=1; $k < $this->m_days[$this->month-1] + 1; $k++){ 
                        if($i == 0)                //일요일만 색처리...ㅡㅡ;;; 
                                echo "<td><font size=-1 color=red>" . $this->m_weeks1[$i] . "</font></td>";         
                        else if($i == 6)                //히히..재밌넹....ㅡ.ㅡ;;; 
                                echo "<td><font size=-1 color=blue>" . $this->m_weeks1[$i] . "</font></td>";         
                        else if($k == $this->day && $this->day == date("d") && $this->month == date("m") && $this->year == date("Y"))                //today 
                                echo "<td><font size=-1 color=yellow>" . $this->m_weeks1[$i] . "</font></td>";         
                        else 
                                echo "<td><font size=-1>" . $this->m_weeks1[$i] . "</font></td>";                 

                        $i++; 
                        if($i > 6)        $i %= 7; 
                } 
                echo "</tr>"; 
                 
                // 다 됐으니...일정을 추가해 보장....흘흘.... 
                 
                echo "</table>"; 
        } 
         
        //변수 초기화 함수 
        function set_init() 
        { 
                // 매달에 대한 마지막 날을 배열로 저장한다. 
                $this->m_days[0] = 31; 
                $this->m_days[1] = 28; 
                $this->m_days[2] = 31; 
                $this->m_days[3] = 30; 
                $this->m_days[4] = 31; 
                $this->m_days[5] = 30; 
                $this->m_days[6] = 31; 
                $this->m_days[7] = 31; 
                $this->m_days[8] = 30; 
                $this->m_days[9] = 31; 
                $this->m_days[10] = 30; 
                $this->m_days[11] = 31; 
                 
                // 윤년 확인 .... 윤년은 2월달이 29일까지임...ㅡ.ㅡ;;; 에흐..ㅡ.ㅡ;; 무쟈게 복잡하넹..ㅡ.ㅡ;; 
                // 이거 엉터리당...반드시 확인할 것...ㅡ.ㅡ;;; 
                if($this->month == 2) 
                        if(($this->year % 4) == 0 && ($this->year % 100) != 0 && ($this->year % 400) != 0) 
                                $this->m_days[1] = 29; 
                                 
                //일주일의 요일을 저장한다..이건..순전히..ㅡ.ㅡ;; 에흐..ㅡ.ㅡ;;; 
                //나중에 요일을 찍기 위함인데..좀더 좋은 방법이 없남..ㅡ.ㅡ;;;바보같당.... 
                $this->m_weeks0[0] = "Sunday"; 
                $this->m_weeks0[1] = "Monday"; 
                $this->m_weeks0[2] = "Tuesday"; 
                $this->m_weeks0[3] = "Wednesday"; 
                $this->m_weeks0[4] = "Thursday"; 
                $this->m_weeks0[5] = "Friday"; 
                $this->m_weeks0[6] = "Saturday"; 
                 
                $this->m_weeks1[0] = "일"; 
                $this->m_weeks1[1] = "월"; 
                $this->m_weeks1[2] = "화"; 
                $this->m_weeks1[3] = "수"; 
                $this->m_weeks1[4] = "목"; 
                $this->m_weeks1[5] = "금"; 
                $this->m_weeks1[6] = "토"; 

        } 
         
        //첫번재 날 요일이 몰까?? 
        function get_first_yoil($month, $year) 
        { 
                return date("l", mktime(0,0,0,$month,1,$year)); 
        }         
         
        //오늘 날짜 리턴 "Y-m-d" 
        function get_today() 
        { 
                return date("Y-m-d"); 
        } 

        //특정 날짜 리턴 
        function get_daydiff($daydiff) 
        { 
                return strftime("%Y-%m-%d", mktime(0,0,0,$this->month,$this->day + $daydiff, $this->year)); 
        }         
         
        //다음날짜 리턴 
        function get_nextday() 
        { 
                return strftime("%Y-%m-%d", mktime(0,0,0,$this->month,$this->day + 1, $this->year)); 
        } 
         
        //다음달 리턴 
        function get_nextmonth() 
        { 
                return strftime("%Y-%m-%d", mktime(0,0,0,$this->month + 1, $this->day, $this->year)); 
        } 
         
        //다음해 리턴 
        function get_nextyear() 
        { 
                return strftime("%Y-%m-%d", mktime(0,0,0,$this->month, $this->day, $this->year + 1)); 
        } 
         
        //이전 날짜 리턴 
        function get_prevday() 
        { 
                return strftime("%Y-%m-%d", mktime(0,0,0,$this->month,$this->day - 1, $this->year)); 
        } 
         
        //이전달 리턴 
        function get_prevmonth() 
        { 
                return strftime("%Y-%m-%d", mktime(0,0,0,$this->month - 1, $this->day, $this->year)); 
        } 
         
        //이전해 리턴 
        function get_prevyear() 
        { 
                return strftime("%Y-%m-%d", mktime(0,0,0,$this->month, $this->day, $this->year - 1)); 
        } 
                 
} 

?> 



======================================================================= 
// 사용해서 본 html코드입니다. 

<? 


include "class.seokhunCalendar.php"; 

if($_GET["mode"] == "post") 
        $today = $_POST["m_year"] . "-" . $_POST["m_month"] . "-" . "01"; 
else if($_GET["mode"] == "get") 
        $today = $_GET["today"]; 
else 
        $today = date("Y-m-d");         
         
$today = split("-", $today); 
$cal = new seokhunCalendar($today[0], $today[1], $today[2]); 


include "../head.html"; 

if($cal) 
        $cal->set_calendar(); 
else 
        echo "<script>alert($cal->errmsg);</script>"; 
?> 

<script> 
        function goURL(url) 
        { 
                href.location = url; 
        } 
</script> 

<form action="project.php?mode=post" method="post"> 
<table width="750" border="0"> 
<tr> 
        <td align="left">        <input type="text" name="m_year" size="4" maxlength="4">- 
        <input type="text" name="m_month" size="2" maxlength="2"> 
        <input type="submit" value="GO~!"> 
        </td> 
        <td> 
        <input type="button" name="m_Today" value="진행 후" onClick="javascript:location='project.php?mode=get&today=<? print $cal->get_today(); ?>'"> 
        <input type="button" name="m_Today" value="진행 중" onClick="javascript:location='project.php?mode=get&today=<? print $cal->get_today(); ?>'"> 
        <input type="button" name="m_NextMonth" value="진행예정" onClick="javascript:location='project.php?mode=get&today=<? print $cal->get_nextmonth(); ?>'"> 
        </td> 
        <td align="right">         
        <input type="button" name="m_PrevYear" value="작 년" onClick="javascript:location='project.php?mode=get&today=<? print $cal->get_prevyear(); ?>'"> 
        <input type="button" name="m_PrevMonth" value="이전달" onClick="javascript:location='project.php?mode=get&today=<? print $cal->get_prevmonth(); ?>'"> 
        <input type="button" name="m_Today" value="오 늘" onClick="javascript:location='project.php?mode=get&today=<? print $cal->get_today(); ?>'"> 
        <input type="button" name="m_NextMonth" value="다음달" onClick="javascript:location='project.php?mode=get&today=<? print $cal->get_nextmonth(); ?>'"> 
        <input type="button" name="m_NextYear" value="내 년" onClick="javascript:location='project.php?mode=get&today=<? print $cal->get_nextyear(); ?>'"> 
        </td> 
</tr> 
</table> 

</form> 

<? 
include "../tail.html";   
?>

댓글목록

등록된 댓글이 없습니다.

Total 165건 7 페이지
게시물 검색
모바일 버전으로 보기
CopyRight ©2004 - 2024, YesYo.com MintState. ™