关于如何将数据库中的用户插入值用作动态计时器倒计时,没有太多解决方案/教程,在页面刷新后不会重置。
我遇到的问题是显示值但是静态。还有其他方法可以实现吗?
如何添加重定向或停止倒数计时器的功能?
<?php
session_start();
$dbHost = 'localhost';
$dbUser = 'root';
$dbPass = 'root';
$dbName = 'student';
$conn = mysql_connect ($dbHost, $dbUser, $dbPass) or die ('MySQL connect failed. ' . mysql_error());
mysql_select_db($dbName,$conn);
$duration="";
$query="select duration from table1";
$result=mysql_query($query);
while ($row = mysql_fetch_array($result)){
$duration=$row["duration"];
}
$_SESSION["duration"]=$duration;
$_SESSION["start_time"]=date("Y-m-d H:i:s");
$end_time=$end_time=date('Y-m-d H:i:s',strtotime('+'.$_SESSION["duration"].'minutes',strtotime($_SESSION["start_time"])));
$_SESSION["end_time"]=$end_time;
include_once 'response.php';
?>
<div id="response"> </div>
<script type="text/javascript">
setInterval(function()
{
var xmlhttp=new XMLHttpRequest();
xmlhttp.open("GET","response.php",false);
xmlhtpp.send(null);
document.getElementById("response").innerHTML=xmlhttp.responseText;
},1000);
</script>
<?php
$from_start=date('Y-m-d H:i:s');
$to_end=$_SESSION["end_time"];
$first=strtotime($from_start);
$second=strtotime($to_end);
$differenceinseconds=$second-$first;
echo gmdate("H:i:s",$differenceinseconds);
?>
答案 0 :(得分:0)
我运行了你的代码并发现了几个问题:
存在JavaScript错误
这是因为以下行中的Javascript代码中存在拼写错误:
xmlhtpp.send(null);
将其更改为
xmlhttp.send(null);
异步请求应该正确执行。
行include_once 'response.php';
将具有回显<div>
上方格式化日期字符串的效果,这将在AJAX请求运行时产生两个格式化的时间戳。删除该include_once
行以避免该情况。
response.php 的代码不会调用session_start();
。除非您的错误处理程序设置忽略E_NOTICE错误,否则计时器顶部可能会出现错误消息:
E_NOTICE:输入8 - 未定义变量:_SESSION - 第12行
参见this phpFiddle中的演示。