<?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="2024-10"> <!-- カレンダー移動用 //--> <input id="move" type="hidden" name="move"> <?php //カレンダー出力 makeCalender($date); ?> </form> </body> </html>