日历-下一个链接


Calendar - Next Link

所以我目前使用这个http://davidwalsh.name/php-calendar作为我的日历,但我有麻烦想出一种方法来添加一个'下一个'/'上一个'链接到下个月…任何帮助都非常感谢!

因为绘制日历的函数是

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)
        )
    )
);

过滤功能将确保我们得到1和12之间的月份和2010和2015之间的年份(相应调整或删除您认为合适的选项)。如果传递的数字不在该范围内(或者还没有点击链接),我们将为它们获得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&amp;year=%d">Next</a>' .
    '<a href="/calendar.php?month=%d&amp;year=%d">Previous</a>',
    $dateTime->modify('-1 month')->format('n'),
    $dateTime->format('Y'),
    $dateTime->modify('+2 month')->format('n'),
    $dateTime->format('Y')
);

demo(略略删节)

另一种选择是将当前月份和年份存储在会话中,然后只有下一个/上一个链接,没有年份和月份,而只是像+1和-1这样的东西来回移动。但是你没有直接的方法跳到某个月份。

就是这些