前提・実現したいこと
カレンダーを作っています。
しかし、前月や次の月のボタン(カレンダーの上の方の矢印)を押したら、前月分のカレンダーを表示させたいのですが、データベースの一覧が出てきます。
発生している問題・エラーメッセージ
出てきません。
該当のソースコード
<?php function h($s) { return htmlspecialchars($s, ENT_QUOTES, 'UTF-8'); } try { if (!isset($_GET['t']) || !preg_match('/\A\d{4}-\d{2}\z/', $_GET['t'])) { throw new Exception(); } $thisMonth = new DateTime($_GET['t']); } catch (Exception $e) { $thisMonth = new DateTime('first day of this month'); } $dt = clone $thisMonth; $prev = $dt->modify('-1 month')->format('Y-m'); $dt = clone $thisMonth; $next = $dt->modify('+1 month')->format('Y-m'); $yearMonth = $thisMonth->format('F Y'); $tail = ''; $lastDayOfPrevMonth = new DateTime('last day of' . $yearMonth . ' -1 month'); while ($lastDayOfPrevMonth->format('w') < 6) { $tail = sprintf('<td class="gray">%d</td>', $lastDayOfPrevMonth->format('d')) . $tail; $lastDayOfPrevMonth->sub(new DateInterval('P1D')); } $body = ''; $period = new DatePeriod( new DateTime('first day of' . $yearMonth), new DateInterval('P1D'), new DateTime('first day of' . $yearMonth . ' +1 month') ); $today = new DateTime('today'); foreach ($period as $day) { if ($day->format('w') % 7 === 0) { $body .= '</tr><tr>'; } $todayClass = ($day->format('Y-m-d') === $today->format('Y-m-d')) ? 'today' : ''; $body .= sprintf('<td class="youbi_%d %s">%d</td>', $day->format('w'), $todayClass, $day->format('d')); } $head = ''; $firstDayOfNextMonth = new DateTime('first day of' . $yearMonth . ' +1 month'); while ($firstDayOfNextMonth->format('w') > 0) { $head .= sprintf('<td class="gray">%d</td>', $firstDayOfNextMonth->format('d')); $firstDayOfNextMonth->add(new DateInterval('P1D')); } $html = '<tr>' . $tail . $body . $head . '</tr>'; ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="css/style.css"> <title>Calender</title> </head> <body> <table> <thead> <tr> <th><a href="/?t=<?php echo h($prev); ?>">«</a></th> <th colspan="5"><?php echo h($yearMonth); ?></th> <th><a href="/?t=<?php echo h($next); ?>">»</a></th> </tr> </thead> <tbody> <tr> <td>Sun</td> <td>Mon</td> <td>Tue</td> <td>Wed</td> <td>Thu</td> <td>Fri</td> <td>Sat</td> </tr> <?php echo $html; ?> </tbody> <tfoot> <tr> <th colspan="7"><a href="/">Today</a></th> </tr> </tfoot> </table> </body> </html>
また、できれば、こういった場合の対処を調べる検索のしかたも知りたいです。
よろしくお願いします。
先月や次月の表示を意図してクリックする箇所で右クリックして「リンク先URL」を取得したときにどうなっていますか?
リンクのURLという事でしょうか?
http://localhost:8888/?t=2021-03
こうなっています。
よろしくお願いします。
データベースの一覧じゃなくてディレクトリの一覧。
実行したいPHPはどこに置いてますかね
MAMP/htdocs/calender/index.phpのindex.phpを実行したいです。
回答してます。
すみません、今見ました。やってみます。
回答2件
あなたの回答
tips
プレビュー