【问题标题】:PHP how to calculate days between 2 array session dates?PHP如何计算2个数组会话日期之间的天数?
【发布时间】:2021-03-11 08:52:11
【问题描述】:

对于这个非常长的问题,我深表歉意。我只是想确保这个问题得到完全解决:

所以通过一个html表单,我要求用户五次给出四个信息:deliveryby、itemNo、inputTime、inputTime2。

这些信息中的每一个都存储在一个会话数组中。

将显示所有这 5 个项目,对于每个项目,用户可以单击“检索”按钮或“删除”按钮。

所以对于这 5 项中的每一项,我都需要一个函数来跟踪每个 inputTime2 和 inputTime 之间的天数。

如果天数超过2天,可以点击“删除”按钮,该项目将从会话中清除。

但如果少于 2 天,则可以单击“检索”按钮,并且该项目也将从会话中清除。

检索和删除按钮都会从会话中删除项目。

唯一的区别是两个按钮都需要扫描一天的持续时间。

Box-function.php :日期函数所在的位置。此页面附加到“删除”按钮。我不确定我是否做得对。

<?php

    session_start();

    $x = $_GET['id'];

    //echo $x;
    
    $date1 = array();
    $date2 = array();
    $datediff = array();
    $days = array();

//to assign the session date array and find out how many days are between the two dates
    for($x=0; $x<5; $x++){
        $date1 = [strtotime($_SESSION['InputTime'][$x])][$x];
        $date2 = [strtotime($_SESSION['InputTime2'][$x])][$x];
        $datediff = [$date2 - $date1][$x];
        $days = [round($datediff / (60*60*24))][$x];
    }
    
    for($x=0; $x<5; $x++){
    if ($days[$x] == 2 && $days[$x] > 2){    
   //if( date("Y-m-d", strtotime("+2 day", strtotime($_SESSION['InputTime'][$x])))){

    $_SESSION['DeliveryBy'][$x] = '';
    $_SESSION['ItemNo'][$x] = '';
    $_SESSION['InputTime'][$x] = '';

    header('Location: User-display1.php');
      }      
    }

?>>

用户-display1.php:

for($x=0; $x<5; $x++) {
  if($_SESSION['DeliveryBy'][$x]!=""){
echo "<tr>";
echo "<td>"; echo $x+1; echo "</td>";
echo "<td>"; echo $_SESSION['DeliveryBy'][$x];  echo "</td>";
echo "<td>"; echo $_SESSION['InputTime'][$x];  echo "</td>";
echo "<td>"; ?> <a href="clear-session.php?id=<?php echo $x; ?>" > <button type="button" class="btn btn-success">retrieve</button></a>
                  <?php echo "</td>";
echo "<td>"; ?> <a href="Box-function.php?id=<?php echo $row["id"]; ?>"><button type="button" class="btn btn-danger">Delete</button></a> <?php echo "</td>";

echo "</tr>";
  }
  else{
  echo "<tr>";
echo "<td>"; echo $x+1; echo "</td>";
echo "<td>"; echo ' ';  echo "</td>";
echo "<td>"; echo ' ';  echo "</td>";
echo "<td>"; ?> <a href="clear-session.php?id=<?php echo $x; ?>" > <button type="button" class="btn btn-success">retrieve</button></a>
                  <?php echo "</td>";
echo "<td>"; ?> <a href="Box-function.php?id=<?php echo $row["id"]; ?>"><button type="button" class="btn btn-danger">Delete</button></a> <?php echo "</td>";

echo "</tr>";
  } 
} 

clear-session.php :此页面应该清除天差小于 2 天的项目的会话变量,但我不知道该怎么做,因为我仍然遇到 Box 功能的问题。 php页面。

<?php 

    session_start();


     $x = $_GET['id'];

        //echo $x;

    $_SESSION['DeliveryBy'][$x] = '';
    $_SESSION['ItemNo'][$x] = '';
    $_SESSION['InputTime'][$x] = '';

 header('Location: User-display1.php');


?>

代码没有显示错误。但我无法单击删除按钮。单击按钮时没有任何变化。我认为这段代码的逻辑可能存在一些错误。谁能告诉我应该怎么做?

【问题讨论】:

    标签: php html arrays date session


    【解决方案1】:

    好吧,您并没有真正指定日期的格式。但我确实看到了:

    strtotime($_SESSION['InputTime'][$x])
    

    所以我认为它至少是 PHP 理解的。知道了这一点,你可以使用这样的东西:

    <?php
    $old_o = new DateTime('2019-12-31');
    $new_o = new DateTime;
    echo $new_o->diff($old_o)->days, "\n";
    

    https://php.net/class.dateinterval

    【讨论】:

    • 感谢您的回答。关于我应该如何处理 inputTime, inputTime2 数组的任何建议?
    猜你喜欢
    • 2014-09-19
    • 2011-04-08
    • 2014-08-07
    • 2020-10-16
    • 1970-01-01
    • 1970-01-01
    • 2017-08-11
    • 2012-02-26
    • 2010-10-07
    相关资源
    最近更新 更多