在php中递增和递减“date”变量

时间:2014-11-29 06:52:02

标签: javascript php jquery html session

我目前正在开发一个项目,它基本上是一个调度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>

谢谢!!!!

5 个答案:

答案 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;