ページング付きカレンダー

<html>
<head>
<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0">
<style>
body {
	width:90%;
	margin: 24px auto;
}
div {
	text-align: center;
}
table {
	width: 70%;
	margin: 24px auto;
}
</style>
</head>
<body>
<div>
<?php
//2020-01-01の変数
$MasterDate = date('Y-m-d',strtotime('2020-01-01'));

//曜日の配列化
$youbi = array(
"月",
"火",
"水",
"木",
"金",
"土",
"日"
);

for($i=0; $i<=11; $i++){
	//月の配列
	$montharray[] = array(date('n',strtotime("$MasterDate +$i month")));
}

//ページング構文
define('MAX','1');
$array_count = count($montharray) ;
$max_page = ceil($array_count / MAX-1);
if(!isset($_GET['page_id'])){
$now = 0;
} else {
$now = $_GET['page_id'];
}
$start_no = ($now - 1) * MAX;
$montharray = array_slice($montharray, $start_no, MAX, true);

echo "<table border='1'>";

//月のスタート位置カウント初期化
$count2 = 0;
if(isset($_GET['page_id'])){
	$i = $_GET['page_id'];
} else {
	$i = 0;
}
for($i; $i <= $now; $i++){
	//月のカウント
	$month = date('n',strtotime("$MasterDate +$i month"));
	
	//月の日数を配列化
	$MonthCount = array(date('t',strtotime("$MasterDate +$i month")));
	
	//月の出力
	echo "<tr><th colspan='7'>{$month}月</th></tr><tr>";
	
	//曜日の出力
	foreach($youbi as $val){
		echo "<th>{$val}</th>";
	}
	echo "</tr><tr>";

	//週の折り返しカウント
	$count = 1;
	
	//月のスタート位置設定※配列化しても良い
	if($i == 0){
		$c = -1;
	} else if($i == 1){
		$c = -4;
	} else if($i == 2){
		$c = -5;
	} else if($i == 3){
		$c = -1;
	} else if($i == 4){
		$c = -3;
	} else if($i == 5){
		$c = 1;
	} else if($i == 6){
		$c = -1;
	} else if($i == 7){
		$c = -4;
	} else if($i == 8){
		$c = 0;
	} else if($i == 9){
		$c = -2;
	} else if($i == 10){
		$c = -5;
	} else if($i == 11){
		$c = 0;
	}
	
	//日数の出力
	for($c; $c<=$MonthCount[0]; $c++){
		//月のスタート位置空テーブル出力
		if($c <= 0 && $i == $now){
			echo "<td></td>";
		}
		//空の後、正規位置スタート
		if($c >= 1){
			echo "<td>{$c}</td>";
		}
		//週の折り返し
		if($count == 7){
			echo "</tr><tr>";
			$count = 0;
		}
		//週の折り返しカウント
		$count++;
	}
	//月のスタート位置カウント
	$count2++;
}

echo "</table>";

//ページング
// リンクをつけるかの判定
if($now >= 1){ 
echo '<a href=\'index-1.php?page_id='.($now -1).'\')>前へ </a>';

} else {
echo ' '. ' ';
}

// リンクをつけるかの判定
if($now < $max_page){ 
echo '<a href=\'index-1.php?page_id='.($now + 1). '\')> 次へ</a>';
} else {
echo ' ' . ' ';
}
?>
</div>
</body>
</html>
ページング付きカレンダー
トップへ戻る