我目前正在开发一个项目,它基本上是一个调度Web应用程序。我有一个页面,用户输入一些将在当天保存的文本。
还允许用户为下一天和前一天或使用日历创建条目。
在我的页面底部,我有两个按钮:上一天和下一天。
我希望能够在第二天点击,并在页面顶部显示第二天的日期。一旦我在第二天的页面,如果我再次点击第二天,我应该去第二天,即两天头。等等。这同样适用于前一天。
所以,我需要一种方法,使用按钮在日历中连续前进和后退。
到目前为止,我可以在下一天和前一天立即前往,但我无法继续。
这些是页面底部的链接:
<a href="builder.php?day=previous" id="btn_previous_day">Previous day</a>
<a href="builder.php?day=next" id="btn_next_day">Next day</a>
这就是我找到点击了哪个链接的方式。此代码位于页面顶部
<?php
$_SESSION['prev'] = 0;
$_SESSION['next'] = 0;
if(isset($_GET['day']))
{
if( $_GET['day'] == 'previous' )
{
$_SESSION['prev']--;
$currentDay = date('j m o', strtotime(' - ' . $_SESSION['prev'] . ' day'));
}
if($_GET['day'] == 'next')
{
$_SESSION['next']++;
$currentDay = date('j m o', strtotime(' + ' . $_SESSION['next'] . ' day'));
}
} else {
$currentDay = date('j m o');
}
?&GT;
这是当天输出的地方:
<p><input type="text" id="title" style="border: none;" name="title" size="20" value=" WOD <?php echo $currentDay; ?>"/></p>
谢谢!!!!
答案 0 :(得分:1)
试试这个:
@session_start();
if(isset($_GET['day']))
{
if( $_GET['day'] == 'previous' )
{
$_SESSION['currentDay']=$currentDay = date('j m o', (strtotime($_SESSION['currentDay']) - (3600*24)));
}
if($_GET['day'] == 'next')
{
$_SESSION['currentDay']= $currentDay = date('j m o', (strtotime($_SESSION['currentDay']) + (3600*24)));
}
} else {
$_SESSION['currentDay']=$currentDay = date('j m o');
}
答案 1 :(得分:1)
这是因为每次加载页面时都会将会话变量设置为零。
尝试替换以下行:
$_SESSION['prev'] = 0;
$_SESSION['next'] = 0;
与
if(!$_SESSION['prev']){
$_SESSION['prev'] = 0;
}
if(!$_SESSION['next']){
$_SESSION['next'] = 0;
}
它应该允许你进一步前几天。
答案 2 :(得分:1)
您似乎在代码顶部设置了prev并且在0旁边。因此,即使递增/递减next / prev值,它们也会重置为零。因此,从今天开始,你不可能超过+/-一天。
显然,并非所有代码都在这里,但您只需要在每个会话中设置一次会话变量。
另外,你真的不需要下一个AND prev - 你只需要一个变量即可。所以你可以在顶部做这样的事情:
if (!isset($_SESSION['dayIndex']))
$_SESSION['dayIndex'] = 0;
然后:
if( $_GET['day'] == 'previous' )
{
$_SESSION['dayIndex']--;
$currentDay = date('j m o', strtotime(' - ' . $_SESSION['dayIndex'] . ' day'));
}
else if($_GET['day'] == 'next')
{
$_SESSION['dayIndex']++;
$currentDay = date('j m o', strtotime(' + ' . $_SESSION['dayIndex'] . ' day'));
}
您也可以通过URL参数或其他一些方式传递特定日期来完成此操作。
答案 3 :(得分:1)
根据此处提出的所有建议,只是想发布我在问题中找到的解决方案。谢谢大家。
我对这个问题的解决方案:
if(!$_SESSION['dayIndex']){
$_SESSION['dayIndex'] = 0;
}
if(isset($_GET['day'])){
if( $_GET['day'] == 'previous' ){
--$_SESSION['dayIndex'];
$currentDay = date('j m o', strtotime( $_SESSION['dayIndex'] . 'day'));
}
if($_GET['day'] == 'next'){
++$_SESSION['dayIndex'];
$currentDay = date('j m o', strtotime($_SESSION['dayIndex'] . ' day'));
}
} else {
$currentDay = date('j m o');
}
答案 4 :(得分:0)
您可以通过在Url中添加其他参数来轻松完成此操作,例如
$_GET['n']
$ _SESSION
也是如此并在每个页面中继续增加此参数
// this will get the prev three days (for example)
<a href="builder.php?day=previous&n=3" id="btn_previous_day">Previous day</a>
// this will get the next three days (for example)
<a href="builder.php?day=next&n=3" id="btn_next_day">Next day</a>
当您点击下一个按钮增加此按钮时,它将显示接下来的4天,依此类推
这是你怎么做的
if(isset($_GET['day']))
{
if( $_GET['day'] == 'previous' )
{
$currentDay = date('j m o', strtotime(' - ' . $_GET['n'] . ' day'));
}
if($_GET['day'] == 'next')
{
$currentDay = date('j m o', strtotime(' + ' . $_GET['n'] . ' day'));
}
}
echo $currentDay;