我目前正在开发一个页面,该页面根据用户选择的月份和年份使用PHP创建日历。我使用了列表框来完成这个动作,但不知何故它似乎没有正常工作。
这是我使用的HTML表单
<div id="calendar">
<form method="post" action="calendar.html">
<label>Year: </label>
<select name="year">
<option>2000</option>
<option>2001</option>
<option>2002</option>
<option>2003</option>
<option>2004</option>
<option>2005</option>
<option>2006</option>
<option>2007</option>
<option>2008</option>
<option>2009</option>
<option>2010</option>
<option>2011</option>
<option>2012</option>
<option>2013</option>
<option>2014</option>
<option>2015</option>
</select>
<label>Month: </label>
<select name="month">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
<option>6</option>
<option>7</option>
<option>8</option>
<option>9</option>
<option>10</option>
<option>11</option>
<option>12</option>
</select>
<input type="submit" name="submit" value="Go!" />
</form>
</div>
以下是PHP的代码
<?php
$year = $_POST{"year"};
$month = $_POST{"month"};
$year = date("Y", $year);
$month = date("m", $month);
$firstDay = mktime(0, 0, 0, $month, 1, $year);
$title = date("F", $firstDay);
$dayOfWeek = date("D", $firstDay);
switch($dayOfWeek) {
case "Sun": $blank = 0; break;
case "Mon": $blank = 1; break;
case "Tue": $blank = 2; break;
case "Wed": $blank = 3; break;
case "Thu": $blank = 4; break;
case "Fri": $blank = 5; break;
case "Sat": $blank = 6; break;
}
$daysInMonth = cal_days_in_month(0, $month, $year);
echo "<table class='centertable'>";
echo "<tr><th colspan=7>" . $title . " " . $year . "</th></tr>";
echo "<tr><th>Sun</th><th>Mon</th><th>Tue</th><th>Wed</th><th>Thu</th><th>Fri</th><th>Sat</th></tr><tr>";
$dayCount = 1;
while ($blank > 0) {
echo "<td> </td>";
$blank--;
$dayCount++;
}
$dayNum = 1;
while ($dayNum <= $daysInMonth) {
if (date("d") != $dayNum) {
echo "<td>" . $dayNum . "</td>";
$dayNum++;
$dayCount++;
} else {
echo "<td class='currentdate'>" . $dayNum . "</td>";
$dayNum++;
$dayCount++;
}
if ($dayCount > 7) {
echo "</tr><tr>";
$dayCount = 1;
}
}
while ($dayCount > 1 and $dayCount <= 7) {
echo "<td> </td>";
$dayCount++;
}
echo "</tr></table>";
?>
我创建了一个CSS类来突出显示当前日期,当时我正在处理显示当前查看月份的自动日历。
当我添加列表框时,这似乎不再起作用了。我不知道如何,但我上面提供的代码只显示1970年1月的日历,无论我从列表框中选择什么。
请注意,列表框和PHP代码位于同一页面中。我将提交按钮引用到同一页面,以便用户可以选择其他月份和年份。另外,如果日期是今天(月和年),我想添加一个CSS类。此代码还突出显示日期10(今天),即使日历是1970年1月。
编辑:我使用了错误的单词,它应该是下拉列表而不是列表框。
答案 0 :(得分:0)
你的第2行不正确:
$year = $_POST{"year"};
$month = $_POST{"month"};
在php中,必须使用方括号作为数组索引:
$year = $_POST["year"];
$month = $_POST["month"];
确认列表框中是否也正确设置了年份和月份(名称属性&#34;年份&#34;以及&#34;月份&#34;)。
编辑:根据您的HTML表单,将表单操作更改为:
<form method="post" action="calendar.php">
评论/删除文件的第3行和第4行:
<?php
$year = $_POST["year"];
$month = $_POST["month"];
//$year = date("Y", $year);
//$month = date("m", $month);
使用名称calendar.php
保存文件。它会产生like this