php 달력 만들기
페이지 정보
본문
이번시간에는 달력을 그려보기로 하겠습니다.
이 강좌는 날자별 예약을 배우기 위해 필요한 부분입니다.
우선 소스를 보면서 설명드리겠습니다.
<?
// 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
이런 형식의 함수입니다.
다음시간에는 메일을 보내는 함수에 대해 알아보도록 하겠습니다.
이 강좌는 날자별 예약을 배우기 위해 필요한 부분입니다.
우선 소스를 보면서 설명드리겠습니다.
<?
// 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
이런 형식의 함수입니다.
다음시간에는 메일을 보내는 함수에 대해 알아보도록 하겠습니다.
- 이전글리눅스에서 윈도우 원격제어하기 20.02.21
- 다음글코드이그나이터 index.php 파일 없이 사용하기( codeigniter) 20.02.21
댓글목록
등록된 댓글이 없습니다.