【问题标题】:incrementing and decrementing a "date" variable in php在php中增加和减少“日期”变量
【发布时间】:2014-11-29 06:52:01
【问题描述】:

我目前正在做一个项目,它基本上是一个调度网络应用程序。我有一个页面,用户可以在其中输入一些将在当天保存的文本。

还允许用户输入第二天和前一天的条目,或者使用日历。

我的页面底部有两个按钮:前一天和后一天。

例如,我希望能够在第二天单击并在页面顶部显示第二天的日期。而一旦我在第二天的页面,如果我再次点击第二天我应该去第二天,即两天一头。等等。前一天也一样。

所以,我需要一种使用按钮在日历中连续前进和后退的方法。

到目前为止,我可以立即前往第二天和前一天,但我无法继续。

这些是页面底部的链接:

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

}
?>

这是当天的输出:

<p><input type="text" id="title" style="border: none;" name="title" size="20" value=" WOD <?php echo $currentDay; ?>"/></p>

谢谢!!!!

【问题讨论】:

  • 你可能想这样做link

标签: javascript php jquery html session


【解决方案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');
}

【讨论】:

    【解决方案2】:

    这是因为您在每次加载页面时都将会话变量设置为零。

    尝试替换以下行:

    $_SESSION['prev'] = 0;
    $_SESSION['next'] = 0;
    

    if(!$_SESSION['prev']){
    $_SESSION['prev'] = 0;
    }
    
    if(!$_SESSION['next']){
    $_SESSION['next'] = 0;
    }
    

    它应该可以让你在接下来的几天和之前的日子里走得更远。

    【讨论】:

      【解决方案3】:

      您似乎在代码顶部设置了 prev 和 next 0。因此,即使您增加/减少下一个/上一个值,它们也会被重置为零。因此,从今天起,您不能再过 +/- 一天。

      显然并非所有代码都在这里,但您只需在每个会话中设置一次会话变量。

      此外,您实际上并不需要 next 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 参数或其他多种方式传递特定日期来执行此操作。

      【讨论】:

        【解决方案4】:

        只是想根据此处提出的所有建议发布我找到的问题的解决方案。谢谢大家。

        我对这个问题的解决方案:

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

        【讨论】:

          【解决方案5】:

          您可以通过在 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;
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2017-09-21
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-08-03
            • 1970-01-01
            • 2012-03-25
            相关资源
            最近更新 更多