Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php中的在线考试时间下降计数器_Php_Jquery_Ajax - Fatal编程技术网

php中的在线考试时间下降计数器

php中的在线考试时间下降计数器,php,jquery,ajax,Php,Jquery,Ajax,如何在php中为在线考试创建一个向下计数器,当计数器达到0后,它应该自动完成考试。我可以使用这些代码吗?如果可能,请告诉我如何使用 <!-- Display the countdown timer in an element --> <p id="demo"></p> <script> // Set the date we're counting down to var countDownDate = new Date("Sep 5, 2

如何在php中为在线考试创建一个向下计数器,当计数器达到0后,它应该自动完成考试。我可以使用这些代码吗?如果可能,请告诉我如何使用

    <!-- Display the countdown timer in an element -->
<p id="demo"></p>

<script>
// Set the date we're counting down to
var countDownDate = new Date("Sep 5, 2018 15:37:25").getTime();

// Update the count down every 1 second
var x = setInterval(function() {

  // Get todays date and time
  var now = new Date().getTime();

  // Find the distance between now an the count down date
  var distance = countDownDate - now;

  // Time calculations for days, hours, minutes and seconds
  var days = Math.floor(distance / (1000 * 60 * 60 * 24));
  var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
  var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
  var seconds = Math.floor((distance % (1000 * 60)) / 1000);

  // Display the result in the element with id="demo"
  document.getElementById("demo").innerHTML = days + "d " + hours + "h "
  + minutes + "m " + seconds + "s ";

  // If the count down is finished, write some text 
  if (distance < 0) {
    clearInterval(x);
    document.getElementById("demo").innerHTML = "EXPIRED";
  }
}, 1000);
</script>

//确定我们倒计时的日期 var countDownDate=新日期(“2018年9月5日15:37:25”).getTime(); //每1秒更新一次倒计时 var x=setInterval(函数(){ //获取今天的日期和时间 var now=new Date().getTime(); //找出现在和倒计时日期之间的距离 var距离=倒计时日期-现在; //天、小时、分钟和秒的时间计算 变量天数=数学楼层(距离/(1000*60*60*24)); 可变小时数=数学楼层((距离%(1000*60*60*24))/(1000*60*60)); var分钟=数学楼层((距离%(1000*60*60))/(1000*60)); var秒=数学楼层((距离%(1000*60))/1000); //使用id=“demo”在元素中显示结果 document.getElementById(“demo”).innerHTML=days+d+hours+h +分钟+米+秒+秒; //如果倒计时结束,写一些文字 如果(距离<0){ 净间隔(x); document.getElementById(“demo”).innerHTML=“过期”; } }, 1000);
使用strotime函数获取日期:

$date = strtotime("Sep 5, 2018 15:37:25");
$remaining = $date - time();
那么$lesting是剩余的秒数。然后你可以除以这个数字得到天数、小时数、分钟数等等

$daysRemaining = floor($remaining / 86400);
$hoursRemaining = floor(($remaining % 86400) / 3600);
要将其放入JavaScript函数中,它将如下所示:

<script>
    setInterval(function() {
        <?php
         /*
        It is important that the date field in the database is the proper datatype,
        i.e. DATETIME.
        The 'date' in this select statement is your date field
        The where clause is the condition of a specific selection in your table
        You then replace the hardcoded date with the data stored as a php variable
        */
        $sql = "SELECT date FROM table WHERE something='something'";
        $result = mysql_query($sql);
        $dateData = mysql_fetch_array($result)[0];

        $date = strtotime("".$dateData."");
        $remaining = $date - time();
        $daysRemaining = floor($remaining / 86400);
        $hoursRemaining = floor(($remaining % 86400) / 3600);
        ?>
        var days = <?php echo $daysRemaining; ?>;
        var hours = <?php echo $hoursRemaining; ?>;
        <?php
        if($remaining <= 0) {
            ?>
            document.getElementById("demo").innerHTML = "EXPIRED";
            <?php
        }else {
            ?>
            document.getElementById("demo").innerHTML = days + "d " + hours + "h ";
            <?php
        }
        ?>
    }, 1000);
</script>

setInterval(函数(){

正如您在评论中提到的,您需要从数据库中获取日期,所以只需将其存储在某个字段中,并在脚本中获取即可

<input type="hidden" id="dateFromDB" value="<?php echo $dateFromDB;?>">
并使用
dateDB
代替静态日期

var countDownDate = new Date(dateDB).getTime();

是的,这个代码看起来不错。你试过这个代码吗?有错误吗?它可以工作,但计时器从(2018年9月5日15:37:25)开始。我不想从那个日期开始计时。我想从我的数据库开始计时。这个代码工作正常。只需用考试开始时间日期(“2018年5月25日11:41:15”)更改时间即可
var countDownDate = new Date(dateDB).getTime();