首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php中的在线考试时间倒计时

php中的在线考试时间倒计时
EN

Stack Overflow用户
提问于 2018-05-25 06:30:31
回答 2查看 1K关注 0票数 0

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

代码语言:javascript
复制
    <!-- 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>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-25 06:47:31

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

代码语言:javascript
复制
<input type="hidden" id="dateFromDB" value="<?php echo $dateFromDB;?>">

我不知道如何从数据库中获取数据,因为您的问题中没有提到任何关于数据库的内容。但我希望你知道怎么做。所以只需将其存储在$dateFromDB中即可。就像这样

代码语言:javascript
复制
var dateDB = document.getElementById("dateFromDB").val();

并使用dateDB代替静态日期。

代码语言:javascript
复制
var countDownDate = new Date(dateDB).getTime();
票数 0
EN

Stack Overflow用户

发布于 2018-05-25 06:37:36

使用strtotime函数获取日期:

代码语言:javascript
复制
$date = strtotime("Sep 5, 2018 15:37:25");
$remaining = $date - time();

然后$remaining是剩馀的秒数。然后,你可以除以这个数字,得到的天数,小时,分钟等。

代码语言:javascript
复制
$daysRemaining = floor($remaining / 86400);
$hoursRemaining = floor(($remaining % 86400) / 3600);

要将其放入JavaScript函数,它应该如下所示:

代码语言: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>

编辑:

看到需要数据库中的日期后,请参阅编辑的答案。如果您使用mysqli或PDO语法,则更改mysql语法。我建议您使用mysqli_或PDO,如果您还没有使用,因为mysql_是不推荐的。

希望这能有所帮助。

不过有个问题。如果你知道考试时间,有什么能阻止你仅仅使用那一段时间呢?总之,我教你如何从数据库中提取一个日期。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50522834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档