달력에 일요일과 공휴일 표시를 하고싶습니다.
신비나라님의 예전스킨을 사용하려 하고 있습니다.
사용중 달력을 사용하는 부분이 있는데... 일요일과 공휴일에는 클릭이 안되게 처리하고 싶습니다.
고수님들의 조언을 부탁드립니다.
달력부분에 사용되는 코드는 아래와 같습니다.
감사합니다.
<?
@header('Content-Type: text/html; charset=utf-8');
include_once("./_common.php");
if (!function_exists("get_first_day")) {
// mktime() 함수는 1970 ~ 2038년까지만 계산되므로 사용하지 않음
// 참고 : http://phpschool.com/bbs2/inc_view.html?id=3924&code=tnt2&start=0&mode=search&s_que=mktime&field=title&operator=and&period=all
function get_first_day($year, $month)
{
$day = 1;
$spacer = array(0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4);
$year = $year - ($month < 3);
$result = ($year + (int) ($year/4) - (int) ($year/100) + (int) ($year/400) + $spacer[$month-1] + $day) % 7;
return $result;
}
}
// 예약일 선택하면 넘어오는 지점
if ($_GET['param1'])
{
$hospitalFK = $_GET['param1'];
unset($param1);
}
if ($_GET['param2'])
{
$schedule_ym = $_GET['param2'];
unset($param2);
}
// 오늘
$today = getdate($g4[server_time]);
$year = (int)substr($schedule_ym, 0, 4);
$month = (int)substr($schedule_ym, 4, 2);
if ($year < 1) $year = $today[year];
if ($month < 1 || $month > 12) $month = $today[mon];
$current_ym = sprintf("%04d%02d", $year, $month);
$current_ym2 = sprintf("%04d-%02d", $year, $month);
$end_day = array(1=>31, 28, 31, 30 , 31, 30, 31, 31, 30 ,31 ,30, 31);
// 윤년 계산 부분이다. 4년에 한번꼴로 2월이 28일이 아닌 29일이 있다.
if( $year%4 == 0 && $year%100 != 0 || $year%400 == 0 )
$end_day[2] = 29; // 조건에 적합할 경우 28을 29로 변경
// 해당월의 1일을 mktime으로 변경
$mktime = mktime(0,0,0,$month,1,$year);
$mkdate = getdate(strtotime(date("Y-m-1", $mktime)));
// 1일의 첫번째 요일 (0:일, 1:월 ... 6:토)
$first_day = get_first_day($year, $month);
// 해당월의 마지막 날짜,
$last_day = $end_day[$month];
if ($month - 1 < 1) {
$before_ym = sprintf("%04d%02d", ($year-1), 12);
$before_m = sprintf("%02d", 12);
} else {
$before_ym = sprintf("%04d%02d", $year, ($month-1));
$before_m = sprintf("%02d", $month-1);
}
if ($month + 1 > 12) {
$after_ym = sprintf("%04d%02d", ($year+1), 1);
$after_m = sprintf("%02d", 1);
} else {
$after_ym = sprintf("%04d%02d", $year, ($month+1));
$after_m = sprintf("%02d", $month+1);
}
?>
<table width="213" cellpadding="2" cellspacing="2" bgcolor="#ffffff">
<tr>
<td height="25" colspan="7" style="font-family:Trebuchet MS;color: #145DAA;" align="center" bgcolor="#ffffff">
<a href="#" onClick="calendarSelectMonth('<?=$before_ym?>');calendarListChange();" onfocus="blur();" style="font-family:Trebuchet MS;color: #C79DD9; font-weight:bold;"> <?=$before_m?></a> <B><?=$year?>/<?=$month?></B> <a href="#" onClick="calendarSelectMonth('<?=$after_ym?>');calendarListChange();" onfocus="blur();" style="font-family:Trebuchet MS;color: #C79DD9; font-weight:bold;"><?=$after_m?> </a></div></td>
</tr>
<tr>
<td align='center' bgcolor="#FFBBB4"><b>일</b></td>
<td align='center' bgcolor="#E9E9E9"><b>월</b></td>
<td align='center' bgcolor="#E9E9E9"><b>화</b></td>
<td align='center' bgcolor="#E9E9E9"><b>수</b></td>
<td align='center' bgcolor="#E9E9E9"><b>목</b></td>
<td align='center' bgcolor="#E9E9E9"><b>금</b></td>
<td align='center' bgcolor="#B0D5FF"><b>토</b></td>
</tr>
<?
$cnt = 0;
$day = 0;
for ($i=0; $i<6; $i++) {
echo "<tr>";
for ($k=0; $k<7; $k++) {
$cnt++;
// 오늘이라면
if ($today[year] == $year && $today[mon] == $month && $today[mday] == ($day+1))
{
$bgcolor = "#E8F3F9";
}
else {
// 올해
if ($today[year] == $year)
{
// 이번달이면
if ($today[mon] == $month)
{
// 오늘부터 마지막 날까지만 예약가능
if ($today[mday] <= ($day+1) && $last_day >= ($day+1))
{
$bgcolor = "#E1E5FF";
}
else $bgcolor = "#FFFFFF";
}
// 이번달 이후면 첫날부터 마지막 날까지
else if ($today[mon] < $month && $cnt > $first_day && ($day+1) <= $last_day)
{
$bgcolor = "#E1E5FF";
}
else
{
$bgcolor = "#FFFFFF";
}
}
// 올해 이후면 첫날부터 마지막 날까지
else if ($today[year] < $year && $cnt > $first_day && ($day+1) <= $last_day)
{
$bgcolor = "#E1E5FF";
}
else
{
$bgcolor = "#FFFFFF";
}
}
//if ($k == 0) $bgcolor = "#FFFFFF";
echo "<td bgcolor='{$bgcolor}' onClick='' align='center' height='20' style='font-family:Trebuchet MS;color: #000000;'>";
if ($cnt > $first_day) {
$day++;
if ($day <= $last_day) {
$current_ymd = $current_ym . sprintf("%02d", $day);
$current_ymd2 = $current_ym2 . "-" . sprintf("%02d", $day);
if ($bgcolor == "#E1E5FF") echo "<a href=\"javascript:calendarSelectDayDoctorConfirm('{$current_ymd2}');\">";
echo $day;
if ($bgcolor == "#E1E5FF") echo "</a>";
} else {
echo " ";
}
} else {
echo " ";
}
echo "</td>";
}
echo "</tr>\n";
if ($day >= $last_day)
break;
}
?>
</table>
</div>
사용중 달력을 사용하는 부분이 있는데... 일요일과 공휴일에는 클릭이 안되게 처리하고 싶습니다.
고수님들의 조언을 부탁드립니다.
달력부분에 사용되는 코드는 아래와 같습니다.
감사합니다.
<?
@header('Content-Type: text/html; charset=utf-8');
include_once("./_common.php");
if (!function_exists("get_first_day")) {
// mktime() 함수는 1970 ~ 2038년까지만 계산되므로 사용하지 않음
// 참고 : http://phpschool.com/bbs2/inc_view.html?id=3924&code=tnt2&start=0&mode=search&s_que=mktime&field=title&operator=and&period=all
function get_first_day($year, $month)
{
$day = 1;
$spacer = array(0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4);
$year = $year - ($month < 3);
$result = ($year + (int) ($year/4) - (int) ($year/100) + (int) ($year/400) + $spacer[$month-1] + $day) % 7;
return $result;
}
}
// 예약일 선택하면 넘어오는 지점
if ($_GET['param1'])
{
$hospitalFK = $_GET['param1'];
unset($param1);
}
if ($_GET['param2'])
{
$schedule_ym = $_GET['param2'];
unset($param2);
}
// 오늘
$today = getdate($g4[server_time]);
$year = (int)substr($schedule_ym, 0, 4);
$month = (int)substr($schedule_ym, 4, 2);
if ($year < 1) $year = $today[year];
if ($month < 1 || $month > 12) $month = $today[mon];
$current_ym = sprintf("%04d%02d", $year, $month);
$current_ym2 = sprintf("%04d-%02d", $year, $month);
$end_day = array(1=>31, 28, 31, 30 , 31, 30, 31, 31, 30 ,31 ,30, 31);
// 윤년 계산 부분이다. 4년에 한번꼴로 2월이 28일이 아닌 29일이 있다.
if( $year%4 == 0 && $year%100 != 0 || $year%400 == 0 )
$end_day[2] = 29; // 조건에 적합할 경우 28을 29로 변경
// 해당월의 1일을 mktime으로 변경
$mktime = mktime(0,0,0,$month,1,$year);
$mkdate = getdate(strtotime(date("Y-m-1", $mktime)));
// 1일의 첫번째 요일 (0:일, 1:월 ... 6:토)
$first_day = get_first_day($year, $month);
// 해당월의 마지막 날짜,
$last_day = $end_day[$month];
if ($month - 1 < 1) {
$before_ym = sprintf("%04d%02d", ($year-1), 12);
$before_m = sprintf("%02d", 12);
} else {
$before_ym = sprintf("%04d%02d", $year, ($month-1));
$before_m = sprintf("%02d", $month-1);
}
if ($month + 1 > 12) {
$after_ym = sprintf("%04d%02d", ($year+1), 1);
$after_m = sprintf("%02d", 1);
} else {
$after_ym = sprintf("%04d%02d", $year, ($month+1));
$after_m = sprintf("%02d", $month+1);
}
?>
<table width="213" cellpadding="2" cellspacing="2" bgcolor="#ffffff">
<tr>
<td height="25" colspan="7" style="font-family:Trebuchet MS;color: #145DAA;" align="center" bgcolor="#ffffff">
<a href="#" onClick="calendarSelectMonth('<?=$before_ym?>');calendarListChange();" onfocus="blur();" style="font-family:Trebuchet MS;color: #C79DD9; font-weight:bold;"> <?=$before_m?></a> <B><?=$year?>/<?=$month?></B> <a href="#" onClick="calendarSelectMonth('<?=$after_ym?>');calendarListChange();" onfocus="blur();" style="font-family:Trebuchet MS;color: #C79DD9; font-weight:bold;"><?=$after_m?> </a></div></td>
</tr>
<tr>
<td align='center' bgcolor="#FFBBB4"><b>일</b></td>
<td align='center' bgcolor="#E9E9E9"><b>월</b></td>
<td align='center' bgcolor="#E9E9E9"><b>화</b></td>
<td align='center' bgcolor="#E9E9E9"><b>수</b></td>
<td align='center' bgcolor="#E9E9E9"><b>목</b></td>
<td align='center' bgcolor="#E9E9E9"><b>금</b></td>
<td align='center' bgcolor="#B0D5FF"><b>토</b></td>
</tr>
<?
$cnt = 0;
$day = 0;
for ($i=0; $i<6; $i++) {
echo "<tr>";
for ($k=0; $k<7; $k++) {
$cnt++;
// 오늘이라면
if ($today[year] == $year && $today[mon] == $month && $today[mday] == ($day+1))
{
$bgcolor = "#E8F3F9";
}
else {
// 올해
if ($today[year] == $year)
{
// 이번달이면
if ($today[mon] == $month)
{
// 오늘부터 마지막 날까지만 예약가능
if ($today[mday] <= ($day+1) && $last_day >= ($day+1))
{
$bgcolor = "#E1E5FF";
}
else $bgcolor = "#FFFFFF";
}
// 이번달 이후면 첫날부터 마지막 날까지
else if ($today[mon] < $month && $cnt > $first_day && ($day+1) <= $last_day)
{
$bgcolor = "#E1E5FF";
}
else
{
$bgcolor = "#FFFFFF";
}
}
// 올해 이후면 첫날부터 마지막 날까지
else if ($today[year] < $year && $cnt > $first_day && ($day+1) <= $last_day)
{
$bgcolor = "#E1E5FF";
}
else
{
$bgcolor = "#FFFFFF";
}
}
//if ($k == 0) $bgcolor = "#FFFFFF";
echo "<td bgcolor='{$bgcolor}' onClick='' align='center' height='20' style='font-family:Trebuchet MS;color: #000000;'>";
if ($cnt > $first_day) {
$day++;
if ($day <= $last_day) {
$current_ymd = $current_ym . sprintf("%02d", $day);
$current_ymd2 = $current_ym2 . "-" . sprintf("%02d", $day);
if ($bgcolor == "#E1E5FF") echo "<a href=\"javascript:calendarSelectDayDoctorConfirm('{$current_ymd2}');\">";
echo $day;
if ($bgcolor == "#E1E5FF") echo "</a>";
} else {
echo " ";
}
} else {
echo " ";
}
echo "</td>";
}
echo "</tr>\n";
if ($day >= $last_day)
break;
}
?>
</table>
</div>
|
댓글을 작성하시려면 로그인이 필요합니다.
로그인
댓글 1개
for ($k=0; $k<7; $k++) {
$cnt++;
이부분에서 $k값이 0이면 일요일 입니다
공휴일은 따로 공휴일 파일을 만드시고 년월일을 비교해서 뽑으셔야 할 것 같습니다