所以我目前使用此http://davidwalsh.name/php-calendar作为我的日历,但我无法想出一种方法来添加下一个月的“下一个”/“上一个”链接...任何帮助都很大理解!
答案 0 :(得分:1)
由于绘制日历的功能是
function draw_calendar($month,$year){
您必须在下一个/上一个链接中提供$month
和$year
,例如
/calendar.php?month=12&year=2011
单击此类链接后,$_GET
可以使用此数据。您不需要未经过数据处理的数据,因此您可以在日历脚本的基础上以此方式获取它:
$input = filter_input_array(
INPUT_GET,
array(
'month' => array(
'filter' => FILTER_VALIDATE_INT,
'options' => array('min_range' => 1, 'max_range' => 12)
),
'year' => array(
'filter' => FILTER_VALIDATE_INT,
'options' => array('min_range' => 2010, 'max_range' => 2015)
)
)
);
过滤功能将确保我们在2010年到2015年之间获得1到12个月之间的一个月(相应地调整或根据需要删除选项)。如果传递的数字不在该范围内(或者还没有点击链接),我们将获得false
,这意味着我们必须设置合理的默认值,例如。
$input['year'] = $input['year'] ?: date('Y');
$input['month'] = $input['month'] ?: date('n');
这将使用传递给脚本的有效值,或者,如果值无效,则将年份和/或月份设置为当前年份和/或月份。
现在绘制日历:
echo draw_calendar($input['month'], $input['year']);
对于下一个/上一个链接,您可以手动检查月份是12还是1,然后相应地增加/减少年份或使用DateTime
对象
$dateTime = new DateTime;
$dateTime->setDate($input['year'], $input['month'], 1));
printf(
'<a href="/calendar.php?month=%d&year=%d">Next</a>' .
'<a href="/calendar.php?month=%d&year=%d">Previous</a>',
$dateTime->modify('-1 month')->format('n'),
$dateTime->format('Y'),
$dateTime->modify('+2 month')->format('n'),
$dateTime->format('Y')
);
另一个选择是将当前月份和年份存储在会话中,然后只有没有年份和月份的下一个/上一个链接,而只需要+1和-1之类的来回链接。但是你没有直接的方法可以跳到某个月。
这就是它的全部内容。