phpでカレンダーを作成しています。
前月・翌月に移動するボタンを作成して1ヶ月後と1ヶ月前には移動できます。しかし、年月日を入力して送信ボタンに押したた年、月、日に移動できません。どうしたら良いでしょうか?
<?php // タイムゾーンを設定 date_default_timezone_set('Asia/Tokyo'); // 前月・次月リンクが押された場合は、GETパラメーターから年月を取得 if (isset($_GET['ym'])) { $ym = $_GET['ym']; } else { // 今月の年月を表示 $ym = date('Y-m'); } // タイムスタンプを作成し、フォーマットをチェックする $timestamp = strtotime($ym . '-01'); if ($timestamp === false) { $ym = date('Y-m'); $timestamp = strtotime($ym . '-01'); } // 今日の日付 フォーマット $today = date('Y-m-j'); // カレンダーのタイトルを作成 $html_title = date('Y年n月', $timestamp); // 前月・次月の年月を取得 // strtotimeを使う $prev = date('Y-m', strtotime('-1 month', $timestamp)); $next = date('Y-m', strtotime('+1 month', $timestamp)); // 該当月の日数を取得 $day_count = date('t', $timestamp); // 1日が何曜日か 0:日 1:月 2:火 ... 6:土 $youbi = date('w', $timestamp); // カレンダー作成の準備 $weeks = []; $week = ''; // 第1週目:空のセルを追加 // 例)1日が水曜日だった場合、日曜日から火曜日の3つ分の空セルを追加する $week .= str_repeat('<td></td>', $youbi); for ( $day = 1; $day <= $day_count; $day++, $youbi++) { $date = $ym . '-' . $day; if ($today == $date) { // 今日の日付の場合は、class="today"をつける $week .= '<td class="today">' . $day; } else { $week .= '<td>' . $day; } $week .= '</td>'; // 週終わり、または、月終わりの場合 if ($youbi % 7 == 6 || $day == $day_count) { if ($day == $day_count) { // 月の最終日の場合、空セルを追加 // 例 最終日が木曜日の場合、金・土曜日の空セルを追加 $week .= str_repeat('<td></td>', 6 - ($youbi % 7)); } // weeks配列にtrと$weekを追加する $weeks[] = '<tr>' . $week . '</tr>'; // weekをリセット $week = ''; } } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>PHPカレンダー</title> <body> <form action="calendar1.php" method="get"> <p>年月日を入力</p> <p><input type="date" name="year"></p> <p><input type="submit" name="submitBtn" value="送信"></p> <?php $year=$_POST["year"]; $month=$_POST["month"]; ?> </form> </body> <style> .container { font-family: 'Noto Sans JP', sans-serif; margin-top: 10px; } h4 { margin-bottom: 50px; } th { height: 20px; text-align: center; } td { height: 20px; } .today { background: pink; } th:nth-of-type(1), td:nth-of-type(1) { color: red; } th:nth-of-type(7), td:nth-of-type(7) { color: blue; } </style> </head> <body> <div class="container"> <h3><a href="?ym=<?php echo $prev; ?>"><</a> <?php echo $html_title; ?> <a href="?ym=<?php echo $next; ?>">></a></h3> <table class="table table-bordered"> <tr> <th>日</th> <th>月</th> <th>火</th> <th>水</th> <th>木</th> <th>金</th> <th>土</th> </tr> <?php foreach ($weeks as $week) { echo $week; } ?> </table> </div> </body> </html>
回答1件
あなたの回答
tips
プレビュー