php 달력 만들기 > 질문답변

본문 바로가기
사이트 내 전체검색

질문답변

php 달력 만들기

페이지 정보

profile_image
작성자 미친새
댓글 0건 조회 19,609회 작성일 20-02-21 12:45

본문

이번시간에는 달력을 그려보기로 하겠습니다.

이 강좌는 날자별 예약을 배우기 위해 필요한 부분입니다.

우선 소스를 보면서 설명드리겠습니다.

<?
// 1. 총일수 구하기
$last_day = date("t", time());

// 2. 시작요일 구하기
$start_week = date("w", strtotime(date("Y-m")."-01"));

// 3. 총 몇 주인지 구하기
$total_week = ceil(($last_day + $start_week) / 7);

// 4. 마지막 요일 구하기
$last_week = date('w', strtotime(date("Y-m")."-".$last_day));
?>
<table width='500' cellpadding='0' cellspacing='1' bgcolor="#999999">
  <tr>
    <td height="50" align="center" bgcolor="#FFFFFF" colspan="7"><?=date("Y년 n월")?></td>
  </tr>
  <tr>
    <td height="30" align="center" bgcolor="#DDDDDD">일</td>
    <td align="center" bgcolor="#DDDDDD">월</td>
    <td align="center" bgcolor="#DDDDDD">화</td>
    <td align="center" bgcolor="#DDDDDD">수</td>
    <td align="center" bgcolor="#DDDDDD">목</td>
    <td align="center" bgcolor="#DDDDDD">금</td>
    <td align="center" bgcolor="#DDDDDD">토</td>
  </tr>
     
  <?
    // 5. 화면에 표시할 화면의 초기값을 1로 설정
    $day=1;

    // 6. 총 주 수에 맞춰서 세로줄 만들기
    for($i=1; $i <= $total_week; $i++){?>
  <tr>
    <?
        // 7. 총 가로칸 만들기
        for ($j=0; $j<7; $j++){
    ?>
    <td height="30" align="center" 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'>";
            }else if($j == 6){
                // 10. $j가 0이면 일요일이므로 파란색
                echo "<font color='#0000FF'>";
            }else{
                // 11. 그외는 평일이므로 검정색
                echo "<font color='#000000'>";
            }

            // 12. 오늘 날자면 굵은 글씨
            if($day == date("j")){
                echo "<b>";
            }
         
            // 13. 날자 출력
            echo $day;

            if($day == date("j")){
                echo "</b>";
            }

            echo "</font>";

            // 14. 날자 증가
            $day++;
        }
        ?>
    </td>
    <?}?>
  </tr>
  <?}?>
</table>

[calendar.php 소스]



우선 주석으로 거의 설명을 해놨습니다.

중요한곳은 8번 부분입니다.

1일 앞의 칸은 날자가 표시되지 않아야 하고 또 마지막 날자 다음도 날자가 표시되지 않아야하므로

8번과 같은 조건을 사용한 것입니다.

여기서 나오는 함수 date(), strtotime(), time() 은 날자관련 함수입니다.

우선 시간표시는 PHP에서는 프로그램에서만 알아먹는 시간이 있습니다.

Unix Time stamp 라는건데요.

1970년 1월 1일 0시 0분 0초부터 몇초가 지났는지입니다.

time() 은 지금 현재 시간이 UNIX TIme Stamp로 얼마인지를 알려줍니다.

strtotime() 은 인수로 날자를 표시하는 형식을 넣어서 그 날자를 Unix Time Stamp로 만들어 주는 함수입니다.

date() 함수는 첫번째 인자에 들어간 형식대로 두번째 인자로 들어온 Unix Time Stamp 를 바꿔주는 함수입니다.

두번째 인자가 생략되면 두번째 인자에 time() 으로 구해진 숫자가 들어간것이라고 보면됩니다. 바로 지금 현시간이죠.

첫번째 인자는 아주 많은 종류가 있습니다. Y는 네자리 연도 처럼 각 기호가 하나의 표시형식을 표현합니다.

자세한 인자는 제 블로그 오른쪽에 php 함수 검색에서 date 를 검색해 보시면 됩니다.

우선 여기에 쓰인인자만 설명하면

Y : 네자리 년도 (예: 2010)
m : 0을 포함한 월 (예: 06, 12)
n : 0을 포함하지 않는 월 (예: 6, 12)
j : 0을 포함하지 않는 일 (예, 3, 15)
t : 그 달의 마지막 날자
w : 그 날의 요일, 일요일부터 0 , 토요일은 6

이런 형식의 함수입니다.

다음시간에는 메일을 보내는 함수에 대해 알아보도록 하겠습니다.

댓글목록

등록된 댓글이 없습니다.

회원로그인

회원가입

사이트 정보

회사명 : 회사명 / 대표 : 대표자명
주소 : OO도 OO시 OO구 OO동 123-45
사업자 등록번호 : 123-45-67890
전화 : 02-123-4567 팩스 : 02-123-4568
통신판매업신고번호 : 제 OO구 - 123호
개인정보관리책임자 : 정보책임자명

공지사항

  • 게시물이 없습니다.

접속자집계

오늘
1,450
어제
1,656
최대
5,296
전체
1,489,257
Copyright © 소유하신 도메인. All rights reserved.