如何根据数据库列值倒计时

时间:2017-12-08 16:31:01

标签: javascript php html ajax timer

关于如何将数据库中的用户插入值用作动态计时器倒计时,没有太多解决方案/教程,在页面刷新后不会重置。

我遇到的问题是显示值但是静态。还有其他方法可以实现吗?

database& web

如何添加重定向或停止倒数计时器的功能?

的index.php

<?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>

response.php

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

?>

1 个答案:

答案 0 :(得分:0)

我运行了你的代码并发现了几个问题:

  1. 存在JavaScript错误

    js error

    这是因为以下行中的Javascript代码中存在拼写错误:

    xmlhtpp.send(null);
    

    将其更改为

    xmlhttp.send(null);
    

    异步请求应该正确执行。

  2. include_once 'response.php';将具有回显<div>上方格式化日期字符串的效果,这将在AJAX请求运行时产生两个格式化的时间戳。删除该include_once行以避免该情况。

  3. response.php 的代码不会调用session_start();。除非您的错误处理程序设置忽略E_NOTICE错误,否则计时器顶部可能会出现错误消息:

      

    E_NOTICE:输入8 - 未定义变量:_SESSION - 第12行

  4. 参见this phpFiddle中的演示。