PHP | PHP 달력만들기 소스
작성자
많은 사람들이 달력은 기본이라 말한다. 하지만, 초보자 입장에서 기본이란 없다 ㅠㅠ.
그저 많이 연습해보고 숙달시키고 이해하는 것이 정답이다.
달력을 만들려면, 달력의 개념을 생각하면 된다.
 
PHP달력은 어떻게 만들어야 하는가?
사실, 블로그 뒤져보면 참 많이 나온다.
 
하지만, 내 머리로는 이해하기 어려운 가르침들이 너무 많아서.......
그냥 직접 고민하면서 짜보았다.
 
달력이란, 날짜의 집합체이고, 한달한달, 넘기면서 보거나 년도를 넘기면서 보는 것이다.
 
반드시 알아야 할 정보는
 
1. 이번달은?
2. 다음달은?
3. 저번달은?
4. 내년은?
5. 작년은?
6. 이번달은 몇일까지 있을까?
7. 이번달의 시작은 무슨요일?
 
이 정보만 알면, PHP달력을 만들 수 있는 것 같다.
 
<?php
if(!$s){$s=date("Y-m-d");} // 오늘날짜를 구합니다. $s 에 넣습니다.

function crd($s){ // 함수를 제작합니다. 함수내에서 변수 $s 는 "지정된 달" 입니다 
$x=explode("-",$s); // 들어온 날짜를 년,월,일로 분할해 변수로 저장합니다.
$s_Y=$x[0]; // 지정된 년도 
$s_m=$x[1]; // 지정된 월
$s_d=$x[2]; // 지정된 요일
 
$s_t=date("t",mktime(0,0,0,$s_m,$s_d,$s_Y)); // 지정된 달은 몇일까지 있을까요?
$s_n=date("N",mktime(0,0,0,$s_m,1,$s_Y)); // 지정된 달의 첫날은 무슨요일일까요?
$l=$s_n%7; // 지정된 달 1일 앞의 공백 숫자.
$ra=($s_t+$l)/7; $ra=ceil($ra); $ra=$ra-1; // 지정된 달은 총 몇주로 라인을 그어야 하나?
 
$n_d= date("Y-m-d",mktime(0,0,0,$s_m,$s_d+1,$s_Y)); // 다음날
$p_d= date("Y-m-d",mktime(0,0,0,$s_m,$s_d-1,$s_Y)); // 이전날
$n_Y= date("Y-m-d",mktime(0,0,0,$s_m,$s_d,$s_Y+1)); // 내년
$p_Y= date("Y-m-d",mktime(0,0,0,$s_m,$s_d,$s_Y-1)); // 작년
 
// 변수 $s 에 새로운 값을 넣고 새문서를 만들면, $s 가 들어와 원하는 값을 표시해 줍니다.
echo ("
    <table>
        <tr>
<td><a href='sday_search.php?s=$p_Y'>◀◀</a> </td>
<td width=100 align=center><a href='sday_search.php?s=$p_m'>◀</a></td>
<td width=300 align=center colspan=3>$s_Y 년 $s_m 월</td>
<td> <a href='sday_search.php?s=$n_m'>▶</a></td>
<td> <a href='sday_search.php?s=$n_Y'>▶▶</a></td>
        </tr>
        <tr>
            <td width=100>일요일</td>
            <td width=100>월요일</td>
            <td width=100>화요일</td>
            <td width=100>수요일</td>
            <td width=100>목요일</td>
            <td width=100>금요일</td>
            <td width=100>토요일</td>
        </tr>
    ");
    for($r=0;$r<=$ra;$r++){
        echo "<tr>";
            for($z=1;$z<=7;$z++){
                $rv=7*$r+$z; $ru=$rv-$l; // 칸에 번호를 매겨줍니다. 1일이 되기전 공백들 부터 마이너스 값으로 채운 뒤 ~
                echo "<td width=100 height=80 align=center>";
                if($ru<=0 || $ru>$s_t){ echo "&nbsp;"; } // 딱 그달에 맞는 숫자가 아님 표시하지 말자
                else{
                    $s=date("Y-m-d",mktime(0,0,0,$s_m,$ru,$s_Y)); // 현재칸의 날짜
                    ?><a href="원하는페이지"><?
                    echo "$ru"; // 날짜입니다.
                    echo "</a>";
                }
                echo "</td>";
            }
        echo "</tr>";
    }
    echo "</table>";
}
?>
<body><? crd($s); ?></body>
 
** 바로 윗줄은 달력함수를 표시하라는 명령. 잘 만들어 놓고 표시안하면 의미가 없으므로
 
나름 간단하게 짜본다고 짜보았다.
div 코딩보단, 테이블이 편해보여, 테이블로 작성.
 
이상 PHP달력만들기 소스 종료.

댓글목록

등록된 댓글이 없습니다.

총 게시물 28 개, 페이지 1 RSS
제목 작성자
PHP 배열 순서 변경 시 키값 구하기 H
PHP 컨텐츠 img테그의 src구하기(변환) H
PHP 실시간으로 외환은행 환율 가져오기 H
PHP strip_tags로 제거 되지 않는 테그문제 H
PHP 숫자앞에 0붙이기 H
PHP 2차배열 H
PHP php 배열 sort함수로 임의정렬 H
PHP PHP 달력만들기 소스 H
PHP PHP에서 엑셀파일 불러오기 H
PHP 현재 접속이 모바일인지 PC인지 체크 H
PHP PHP 업로드 확장자 구하기(PATHINFO) H
PHP txt파일 읽어오기 H
PHP xml로 출력하기 H
PHP xml로 저장하기 H
PHP utf-8 문자열 자르기 함수 mb_strimwidth H
게시물 검색