参照用カレンダー

  calendar.php



  
<?
# **********************************************************
# 外部ファイル
# **********************************************************
require_once( "common.php" );

# **********************************************************
# 定数定義
# **********************************************************
foreach( $_GET as $Key => $Value ) {
	$_POST[$Key] = $Value;
}

# **********************************************************
# 処理コントロール
# **********************************************************
switch ( $_SERVER['REQUEST_METHOD'] ) {
	case 'GET':
		if ( $_GET['Nen'] == '' ) {
			$Nen_sel[date( "Y" )]	= "selected";
			$Mm_sel[date( "n" )]	= "selected";

			# 以降の処理を共通にする為
			$_GET['Nen']	= date( "Y" );
			$_GET['Mm']	= date( "n" );
		}
		else {
			$_GET['Nen']	= $_GET['Nen'];
			$_GET['Mm']	= $_GET['Mm'];

			$Nen_sel[$_GET['Nen']]	= "selected";
			$Mm_sel[$_GET['Mm']]	= "selected";
		}
		break;
	case 'POST':
		$Nen_sel[$_GET['Nen']]	= "selected";
		$Mm_sel[$_GET['Mm']]	= "selected";
		break;
}

# **********************************************************
# ビュー
# **********************************************************
# 各月の末日をセットした配列の取得
$MONTH_ARRAY	= GetMonthArray($_GET['Nen']);
# 表示する月の末日を取得
$MONTH_END		= $MONTH_ARRAY[$_GET['Mm']];

# カレンダーテーブルの作成
$CAL .= "<TABLE  cellpadding=5>";

# タイトル部分
$CAL .= Th("日") . Th("月") . Th("火") . Th("水");
$CAL .= Th("木") . Th("金") . Th("土");

# 日付部分の行を開始
$CAL .= "<TR>";
# 初期フラグ
$First = TRUE;

# 1日より末日までのループ
for( $i = 1; $i <= $MONTH_END; $i++) {

	# 初回は、1日の曜日まで空白フィールドを作成
	if ( $First ) {
		$First = FALSE;
		# 1日の曜日を得る
		$FIRST_DAY = date("w", mktime(0,0,0,$_GET['Mm'],1,$_GET['Nen']) );
		# 1日まで空白フィールドを作成
		for( $j = 0; $j < $FIRST_DAY; $j++ ) {
			$CAL .= Td("&nbsp;");
		}
	}

	# 曜日別の配色の為、カレントの日の曜日を得る
	$CUR_DAY = date("w", mktime(0,0,0,$_GET['Mm'],$i,$_GET['Nen']) );

	# 日付
#	$CUR_DATE = sprintf( "%04d%02d%02d", $_GET['Nen'], $_GET['Mm'], $i );
	$OPTION = "onClick='SetData(";
	$OPTION .= Dd($_GET['Nen']);
	$OPTION .= ",";
	$OPTION .= Dd(sprintf( "%02d", $_GET['Mm'] ));
	$OPTION .= ",";
	$OPTION .= Dd(sprintf( "%02d", $i ));
	$OPTION .= ")'";
	$LINK = Alink( "#", $i, $OPTION );
	switch( $CUR_DAY ) {
		# 日曜
		case 0:
			$CAL .= Td( $i, "class=DAY_SUN" );
			break;
		# 土曜
		case 6:
			$CAL .= Td( $LINK, "class=DAY_SAT" );
			break;
		# 通常
		default:
			$CAL .= Td( $LINK, "class=DAY_NORMAL" );
			break;
	}

	# 土曜日の場合
	if ( $CUR_DAY == 6 ) {
		# 最終日の場合は行が終了
		if ( $i == $MONTH_END ) {
			$CAL .= "</TR>\n";
		}
		# 通常は、次の行が開始される
		else {
			$CAL .= "</TR>\n<TR>";
		}
	}
	# 日曜〜金曜
	else {
		# 最終日の場合は土曜まで空白フィールドを作成
		if ( $i == $MONTH_END ) {
			for( $j = $CUR_DAY; $j < 6; $j++ ) {
				$CAL .= Td("&nbsp;");
			}
			# 最終日の場合は行が終了
			$CAL .= "</TR>\n";
		}
	}
	$CAL .= "\n";

}
$CAL .= "</TABLE>";


# **********************************************************
# デバッグ
# **********************************************************
#DispData();

# **********************************************************
# 該当年の各月の最終日をセットした配列を返す
# **********************************************************
function GetMonthArray( $TargetNen ) {

	$Month[1]	= 31;
	$Month[3]	= 31;
	$Month[4]	= 30;
	$Month[5]	= 31;
	$Month[6]	= 30;
	$Month[7]	= 31;
	$Month[8]	= 31;
	$Month[9]	= 30;
	$Month[10]	= 31;
	$Month[11]	= 30;
	$Month[12]	= 31;

	if ( checkdate ( 2, 29, (int)$TargetNen ) ) {
		$Month[2] = 29;
	}
	else {
		$Month[2] = 28;
	}

	return $Month;

}

# **********************************************************
# クライアント側に表示される画面
# **********************************************************
?>
<SCRIPT language=JavaScript>

function SetData( strYyyy, strMm, strDd ) {

	if ( opener ) {
		opener.document.all("<?= $_GET['y'] ?>").value = strYyyy
		opener.document.all("<?= $_GET['m'] ?>").value = strMm
		opener.document.all("<?= $_GET['d'] ?>").value = strDd
	}

}

</SCRIPT>

<HTML>
<HEAD>
<META http-equiv="Content-type" content="text/html; charset=Shift_JIS">
<STYLE type="text/css">
	.DAY_NORMAL {
		text-align:center;
	}

	.DAY_SUN {
		color:red;
		font-weight:bold;
		text-align:center;
	}

	.DAY_SAT {
		color:blue;
		font-weight:bold;
		text-align:center;
	}

</STYLE>
</HEAD>
<BODY>
<!-- *******************************************************
 送信フォーム
******************************************************** -->
<FORM
	name=frmMain
	method=get
	action=<?= $_SERVER['SCRIPT_NAME'] ?>
>

	年
	<SELECT name=Nen>
	<OPTION value=2000 <?= $Nen_sel[2000] ?>>2000
	<OPTION value=2001 <?= $Nen_sel[2001] ?>>2001
	<OPTION value=2002 <?= $Nen_sel[2002] ?>>2002
	<OPTION value=2003 <?= $Nen_sel[2003] ?>>2003
	<OPTION value=2004 <?= $Nen_sel[2004] ?>>2004
	</SELECT>

	月
	<SELECT name=Mm>
	<OPTION value=1 <?= $Mm_sel[1] ?>>1
	<OPTION value=2 <?= $Mm_sel[2] ?>>2
	<OPTION value=3 <?= $Mm_sel[3] ?>>3
	<OPTION value=4 <?= $Mm_sel[4] ?>>4
	<OPTION value=5 <?= $Mm_sel[5] ?>>5
	<OPTION value=6 <?= $Mm_sel[6] ?>>6
	<OPTION value=7 <?= $Mm_sel[7] ?>>7
	<OPTION value=8 <?= $Mm_sel[8] ?>>8
	<OPTION value=9 <?= $Mm_sel[9] ?>>9
	<OPTION value=10 <?= $Mm_sel[10] ?>>10
	<OPTION value=11 <?= $Mm_sel[11] ?>>11
	<OPTION value=12 <?= $Mm_sel[12] ?>>12
	</SELECT>

	<INPUT
		name=send
		type=submit
		value="送信"
	>

	<HR size=1 color=black>

	<?= $CAL ?>

<INPUT type=hidden name=y value="<?= $_GET['y'] ?>">
<INPUT type=hidden name=m value="<?= $_GET['m'] ?>">
<INPUT type=hidden name=d value="<?= $_GET['d'] ?>">

</FORM>



</BODY>
</HTML>
  










  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ