PHP | PHP 달력만들기 소스 | |||||
---|---|---|---|---|---|
작성자 | 작성일 | 18-03-07 20:16 | |||
많은 사람들이 달력은 기본이라 말한다. 하지만, 초보자 입장에서 기본이란 없다 ㅠㅠ. 그저 많이 연습해보고 숙달시키고 이해하는 것이 정답이다. 달력을 만들려면, 달력의 개념을 생각하면 된다. 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 " "; } // 딱 그달에 맞는 숫자가 아님 표시하지 말자 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 로 달력만들기 소스 종료. |
|||||
|
|||||
|
댓글목록
등록된 댓글이 없습니다.