前月・翌月へのリンクが上手く表示されません。
ドットインストールでカレンダーのアプリケーションを作成しています。
http://dotinstall.com/lessons/calendar_php_v3/34311
月の左右にある「<<」「>>」のリンク先が先月・翌月のカレンダーにリンクするはずですが、
なぜかxamppのdashboadのページへ飛ばされます。。。
基本的にソースは記載されているものと照らし合わせているので
エラーがあるわけではないですが、理由が分からず手が止まっています。
どなたか教えてください><
一応、自身のソースは下記に転記いたします。
<?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');
}
//var_dump($thisMonth);
//exit;
$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'); //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'), //1日ずつ取得
new DateTime('first day of '.$yearMonth. ' +1 month') //今月の最後の日を取得
);
$today = new DateTime('today');
//今月のカレンダーを表示
foreach ($period as $day) {
if ($day->format('w') % 7 === 0) { //$day->format('w') で日曜日が0、月曜日が1といった具合に表現できる。それを7で割る
$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')); //日を2桁の数字で表す
}
//来月1ヶ月のカレンダーを表示
$head = '';
$firstDayOfNextMonth = new DateTime('first day of '.$yearMonth. ' +1 month'); //来月初日を$firstDayOfNextMonthに格納
while ($firstDayOfNextMonth->format('w') > 0) { //来月初日が0より大きければ
$head .= sprintf('<td class="gray">%d</td>', $firstDayOfNextMonth->format('d')); //グレイ色にすし2桁の数字で表示する
$firstDayOfNextMonth->add(new DateInterval('P1D'));
}
$html = '<tr>'. $tail . $body . $head . '</tr>';
?>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Calendar</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<table>
<thead>
<tr>
<th><a href="/?t=<?php echo h($prev); ?>">«</a></th>
<th colspan="5"><?php echo $yearMonth; ?></th>
<th><a href="/?=<?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>
<tr>
<?php echo $html; ?>
</tbody>
<tfoot>
<tr>
<th colspan="7"><a href="/">Today</a></th>
</tr>
</tfoot>
</table>
</body>
</html>
<?php
function connectDb(){
try {
return new PDO(DSN, DB_USER, DB_PASSWORD);
} catch (PDOException $e) {
echo $e->getMessage();
exit;
}
}
function h($s){
return htmlspecialchars($s, ENT_QUOTES, 'UTF-8');
}
?>
body {
font-family: Arial, sans-serif;
font-size: 14px;
}
a {
text-decoration: none;
}
table {
margin: 15px auto;
border: 1px solid #ddd;
border-collapse: collapse;
}
th {
background: #eee;
}
th, td{
padding: 7px;
text-align: center;
}
.youbi_0 {
color: red;
}
.youbi_6 {
color: blue;
}
.today {
font-weight: bold;
}
.gray {
color: #dedede;
}