戻る

解答例

PHP

<?php
header("Content-type: text/html; charset=utf-8");

//******************************
//サブルーチン
//******************************

//1か月分のカレンダーのHTMLを生成する関数
function createcalendar($year, $month){
	
	//その月の1日のタイムスタンプを取得
	//ここで何年何月分のカレンダーを作るか設定
	$startday = mktime(0, 0, 0, $month, 1, $year);
	
	//その月の1日の曜日を取得
	$startweek = date("w", $startday);
	
	//その月の月末日を取得
	$daycnt = date("t", $startday);
	
	//曜日名の行を組み立て
	$body = "<table border=\"1\">";
	$body .= "<tr>";
	$body .= "<td>日</td>";
	$body .= "<td>月</td>";
	$body .= "<td>火</td>";
	$body .= "<td>水</td>";
	$body .= "<td>木</td>";
	$body .= "<td>金</td>";
	$body .= "<td>土</td>";
	$body .= "</tr>";
	
	//1日より前の空欄となる曜日のセルを組み立て
	$weekcnt = 0;
	
	while($weekcnt != $startweek){
		$body .= "<td><br></td>";
		//曜日を埋める
		$weekcnt++;
	}
	
	//1日から月末日までの日付を出力
	for($daynum = 1; $daynum <= $daycnt; $daynum++){
		
		$body .= "<td>";
		
		if((date("Y/m", $startday) . "/" .$daynum) == date("Y/m/j")){
			//今日なら赤表示
			$body .= "<b style=\"color:#ff0000;\">" . $daynum . "</b>";
		}
		else{
			$body .= $daynum;
		}
		
		$body .= "</td>";
		
		//曜日が土曜なら折り返して次の行へ
		if($weekcnt++ == 6){
			$body .= "</tr>";
			if($daynum < $daycnt){
				$body .= "<tr>";
			}
			
			//曜日を日曜に戻す
			$weekcnt = 0;
		}
	}
	
	//月末日より後ろの空欄となる曜日のセルを組み立て
	while($weekcnt > 0 and $weekcnt <= 6){
		$body .= "<td><br></td>";
		$weekcnt++;
	}
	
	$body .= "</table>";
	
	//関数の返り値を指定
	return $body;
}


//******************************
//メインルーチン
//******************************

$body = "";

//2006年の9月~11月のカレンダのHTMLを生成するループ
for($mm = 9; $mm <= 11; $mm++){
	$body .= createcalendar(2006, $mm) . "<br>";
}

//生成されたHTMLを出りょっく
echo $body;
?>

inserted by FC2 system