每分钟以分钟为单位实时更新日期差异-PHP + MySQL查询

时间:2018-08-02 15:31:22

标签: php jquery mysql

我对此受阻,我需要一些帮助。我有一个包含此信息的MySQL表:

start_session       | users  | points
---------------------------------------
2018-08-01 13:00:00 | anna   | 85.00
2018-08-01 11:23:00 | alfred | 35.00
2018-08-01 17:04:00 | georgy | 125.00
2018-08-01 19:30:00 | linda  | 42.00
2018-08-01 08:35:00 | alex   | 76.00
2018-08-01 10:29:00 | john   | 94.00
2018-08-01 15:27:00 | hugo   | 75.30

我想获取HTML表中显示的每一行的当前日期与开始会话日期之间的分钟差,所以我这样做:

<table class="table">
<tr><td><b>Minutes</b></td><td><b>User - Points</b></td></tr>
<?php
 $sql = "SELECT * FROM users";
 $res = mysql_query($sql);

 $date = date(Y-m-d H:i:s);

 if(mysql_num_rows($res)>0){
    while($row = mysql_fetch_array($res){
     $start_session = $row['start_session'];

          $start_date = new DateTime($start_session);
          $since_start = $start_date->diff(new DateTime($date));
          $minutes = $since_start->days * 24 * 60;
          $minutes += $since_start->h * 60;
          $minutes += $since_start->i;
?>
   <tr>
      <td>
          <?php echo $minutes." min"; ?>
      </td>
      <td>
          <?php echo $row['users']." - ".$row['points']." points"; ?>
      </td>
   </tr>
 <?php
     }
  }
 ?>         
</table>

工作正常,但是刷新页面时分钟更新的时差会自动更新,我知道AJAX可以作为SetInterval的一个选项,但我只想更新分钟列,而无需重写所有表信息。我该怎么解决?

1 个答案:

答案 0 :(得分:0)

这是我已经完成的事情,这就是我的工作方式。

在标记中,您需要将原始日期时间(在您的情况下为start_session值)存储到html元素中。我会将其存储为诸如data-originaltime之类的属性。

使用javascript和setInterval,您可以经常扫描标记中具有此属性的元素,然后重新计算时间差,然后更新页面中的可见文本。这将完全满足您的要求。

  <td data-originaltime="<?php echo $start_session; ?>">
      <?php echo $minutes." min"; ?>
  </td>