|
- 저작권 침해가 우려되는 컨텐츠가 포함되어 있어
글보내기 기능을 제한합니다.
네이버는 블로그를 통해 저작물이 무단으로 공유되는 것을 막기 위해, 저작권을 침해하는 컨텐츠가 포함되어 있는 게시물의 경우 글보내기 기능을 제한하고 있습니다.
상세한 안내를 받고 싶으신 경우 네이버 고객센터로 문의주시면 도움드리도록 하겠습니다. 건강한 인터넷 환경을 만들어 나갈 수 있도록 고객님의 많은 관심과 협조를 부탁드립니다.
|
홈페이지나 정보시스템에서 달력을 표시해야하는 일이 가끔씩 생깁니다. 이때 사용할 수 있는 소스를 공개합니다.
PHP로 달력을 구현하여 예약현황이나 스케줄을 한눈에 볼 수 있도록 달력에 표시할 수 있습니다. 본 편에서는 스케줄을 입력하는 부분은 생략했으니 이 부분은 각자 알아서 구현해보세요.
소스는 첨부파일을 클릭해서 다운받을 수 있습니다.
달력을 표시하는데 4가지를 먼저 계산하게 됩니다.
1. 총일수 구하기 $last_day = date("t", strtotime($yy."-".$mm."-01"));
2. 시작요일 구하기 $start_week = date("w", strtotime($yy."-".$mm."-01"));
3. 총 몇 주인지 구하기 $total_week = ceil(($last_day + $start_week) / 7);
4. 마지막 요일 구하기 $last_week = date('w', strtotime($yy."-".$mm."-".$last_day));
그런 후에 해당 조건에 맞게 반복문을 통해서 셀(<td>)을 그려주는 것입니다. 자세한 소스는 아래를 참조하세요.
<form name="form" method="get"> <table width='910' cellpadding='0' cellspacing='1' bgcolor="#999999"> <tr> <td height="50" align="center" bgcolor="#FFFFFF" colspan="7"> <?=sel_yy($yy,'submit();')?>년 <?=sel_mm($mm,'submit();')?>월 <input type="submit" value="보기"></td> </tr> <tr> <td width="130" height="30" align="center" bgcolor="#DDDDDD"><b>일</b></td> <td width="130" align="center" bgcolor="#DDDDDD"><b>월</b></td> <td width="130" align="center" bgcolor="#DDDDDD"><b>화</b></td> <td width="130" align="center" bgcolor="#DDDDDD"><b>수</b></td> <td width="130" align="center" bgcolor="#DDDDDD"><b>목</b></td> <td width="130" align="center" bgcolor="#DDDDDD"><b>금</b></td> <td width="130" align="center" bgcolor="#DDDDDD"><b>토</b></td> </tr>
<? $today_yy = date('Y'); $today_mm = date('m'); // 5. 화면에 표시할 화면의 초기값을 1로 설정 $day=1;
// 6. 총 주 수에 맞춰서 세로줄 만들기 for($i=1; $i <= $total_week; $i++){?> <tr> <? // 7. 총 가로칸 만들기 for ($j=0; $j<7; $j++){ ?> <td width="130" height="120" align="left" valign="top" bgcolor="#FFFFFF"> <? // 8. 첫번째 주이고 시작요일보다 $j가 작거나 마지막주이고 $j가 마지막 요일보다 크면 표시하지 않아야하므로 // 그 반대의 경우 - ! 으로 표현 - 에만 날자를 표시한다. if (!(($i == 1 && $j < $start_week) || ($i == $total_week && $j > $last_week))){
if($j == 0){ // 9. $j가 0이면 일요일이므로 빨간색 echo "<font color='#FF0000'><b>"; }else if($j == 6){ // 10. $j가 0이면 일요일이므로 파란색 echo "<font color='#0000FF'><b>"; }else{ // 11. 그외는 평일이므로 검정색 echo "<font color='#000000'><b>"; }
// 12. 오늘 날자면 굵은 글씨 if($today_yy == $yy && $today_mm == $mm && $day == date("j")){ echo "<u>"; }
// 13. 날자 출력 echo $day;
if($today_yy == $yy && $today_mm == $mm && $day == date("j")){ echo "</u>"; }
echo "</b></font> ";
//스케줄 출력 //$schstr = get_schedule($yy,$mm,$day); echo $schstr;
// 14. 날자 증가 $day++; } ?> </td> <?}?> </tr> <?}?> </table> </form>
스케줄 내용을 가져오는 함수입니다. 필요에 맞게 수정해주세요. 해당 일 날짜 밑에 내용을 보여주는 부분입니다.
function get_schedule($yy,$mm,$dd) { $mm = str_pad($mm, 2, "0", STR_PAD_LEFT); $dd = str_pad($dd, 2, "0", STR_PAD_LEFT); $dtstr = $yy."-".$mm."-".$dd; $sql = "SELECT * FROM schedule WHERE frdt <= '$dtstr' AND todt >= '$dtstr' ORDER BY frdt, todt"; $ret = dbquery($sql) or die(mysql_error()); while($row = dbfetch($ret)) { $str .= "<font style='font-size:8pt;'>- $row[name]</font><br>"; } return $str; }
몇해 전에 인터넷에서 이 소스를 다운받아서 사용했습니다. 필요한 분이 있을것 같아서 자료를 공유합니다. 무료로 받은 것이니 무료로 주는게 맞지요?^^;
사용하면서 궁금한 점이 있으시면 댓글 달아주세요. 답변 드리겠습니다. 개발자 여러분, 오늘도 행복한 하루 되세요~~^^ |
작성하신 에 이용자들의 신고가 많은 표현이 포함되어 있습니다.
다른 표현을 사용해주시기 바랍니다.
건전한 인터넷 문화 조성을 위해 회원님의 적극적인 협조를 부탁드립니다.
더 궁금하신 사항은 고객센터로 문의하시면 자세히 알려드리겠습니다.