<?php
///////////////////////////////////////////////////////////////
//
// シンプルカレンダー表示サンプル
//
////////////////////////////////////////////////////////////////
//曜日名称
$wday = array("日","月","火","水","木","金","土");
//カレンダーの表示年月
$date = htmlspecialchars(chop($_POST["date"]));
if($date == ""){
$date = date('Y-m');
}
//カレンダー移動
if($_POST["move"] == "N"){
// 'N' 次月に移動
$date = date('Y-m',mktime(0,0,0,substr($date,5,2)+1,1,substr($date,0,4)));
}elseif($_POST["move"] == "P"){
// 'P' 前月に移動
$date = date('Y-m',mktime(0,0,0,substr($date,5,2)-1,1,substr($date,0,4)));
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// カレンダー表示
// $YM yyyy-mm(ex.'2007-04')
// 省略された場合現在の年月のカレンダーを表示
//
/////////////////////////////////////////////////////////////////////////////////////////////////////////
function makeCalender($YM){
global $wday;
//引数チェック
if($YM == ""){
$YM = date('Y-m');
}else{
if(preg_match("/\d{4}\-\d{2}/",$YM) === false){
return "年月不正";
}
}
$y = substr($YM,0,4);
$m = substr($YM,5,2);
if(!checkdate($m,1,$y)){
return "年月不正";
}
//指定月の1日の曜日を取得
$wd1 = date("w", mktime(0,0,0,$m,1,$y));
//月末の日を取得
$lastd = date("d", mktime(0,0,0,$m+1,0,$y));
//カレンダー出力ヘッダ部
$calender = "";
$calender .= "<table class=\"cal\" border=\"1\" cellpadding=\"0\" cellspacing=\"0\" style=\"text-align:center;\">\n";
$calender .= "<tr class=\"head\">\n";
$calender .= "<td><a href=\"#\" onclick=\"m('P');\"><<</a></td>\n";
$calender .= "<td colspan=\"5\" style=\"font-weight:bold;\">".sprintf("%4d / %02d",$y,$m)."</td>\n";
$calender .= "<td><a href=\"#\" onclick=\"m('N');\">>></a></td>\n";
$calender .= "</tr>\n";
$calender .= "<tr class=\"head\">\n";
$calender .= "<td class=\"red\">".$wday[0]."</td>\n";
$calender .= "<td>".$wday[1]."</td>\n";
$calender .= "<td>".$wday[2]."</td>\n";
$calender .= "<td>".$wday[3]."</td>\n";
$calender .= "<td>".$wday[4]."</td>\n";
$calender .= "<td>".$wday[5]."</td>\n";
$calender .= "<td class=\"blue\">".$wday[6]."</td>\n";
$calender .= "</tr>\n";
//カレンダー出力日付部
for($i = 0; $i <= 5; $i++){
if($d >= $lastd){
break;
}
$calender .= "<tr style=\"text-align:center;background-color:#ffffff;\">\n";
for($j = 0; $j <= 6; $j++) {
$d = ($i * 7) + ($j - $wd1) + 1;
if ($d > $lastd or $d < 1) {
$calender .= "<td style=\"background-color:#eeeeee;\"> </td>\n";
}else{
if(sprintf("%4d%02d%02d",$y,$m,$d) == date('Ymd')){
//現在の月日に一致した時
$calender .= "<td style=\"background-color:#ffff00;\">".sprintf("%2d",$d)."</td>\n";
}else{
switch($j){
case 0: //日曜日
$calender .= "<td style=\"color:#ff0000;\">".sprintf("%2d",$d)."</td>\n";
break;
case 6: //土曜日
$calender .= "<td style=\"color:#0000ff;\">".sprintf("%2d",$d)."</td>\n";
break;
default: //平日
$calender .= "<td>".sprintf("%2d",$d)."</td>\n";
}
}
}
}
$calender .= "</tr>\n";
}
$calender .= "</table>\n";
print $calender;
}
?>
<html>
<head>
<title>シンプルカレンダーサンプル</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="cache-control" content="no-cache" />
<meta equiv="expires" content="0" />
<!--// カレンダー表示部スタイル //-->
<style type="text/css">
.cal {font-size:11pt;border-style:outset;border-collapse:collapse;width:220px;height:150px;}
.red {background-color:#FFCCCC;}
.blue {background-color:#CCCCFF;}
.head {background-color:#CCFFCC;}
A:hover { background-color:#FFFF00; color:#000099; text-decoration: none;}
</style>
<!--// カレンダー移動用javascript関数 //-->
<script type="text/javascript">
function m(strM){
document.getElementById("move").value = strM;
document.getElementById("f01").method = "post";
document.getElementById("f01").action = "cal.php";
document.getElementById("f01").submit();
}
</script>
</head>
<body>
<form id="f01">
シンプルカレンダー表示サンプル
<!-- 現在表示している年月を保持 //-->
<input id="date" type="hidden" name="date" value="2025-10">
<!-- カレンダー移動用 //-->
<input id="move" type="hidden" name="move">
<?php
//カレンダー出力
makeCalender($date);
?>
</form>
</body>
</html>