我对此受阻,我需要一些帮助。我有一个包含此信息的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的一个选项,但我只想更新分钟列,而无需重写所有表信息。我该怎么解决?
答案 0 :(得分:0)
这是我已经完成的事情,这就是我的工作方式。
在标记中,您需要将原始日期时间(在您的情况下为start_session值)存储到html元素中。我会将其存储为诸如data-originaltime之类的属性。
使用javascript和setInterval,您可以经常扫描标记中具有此属性的元素,然后重新计算时间差,然后更新页面中的可见文本。这将完全满足您的要求。
<td data-originaltime="<?php echo $start_session; ?>">
<?php echo $minutes." min"; ?>
</td>