Счетчик времени онлайн-экзамена на php

как создать обратный счетчик в 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>

Да, этот код выглядит нормально. Вы пробовали этот код? Есть ошибка?

prit.patel 25.05.2018 08:33

он работает, но таймер запускается с (5 сентября 2018 г. 15:37:25) Я не хочу запускать его с этой даты, я хочу начать дату из моей базы данных

Shiffin J Thomas 25.05.2018 08:36

этот код работает нормально. просто измените время на дату начала экзамена («Май 25, 2018 11:41:15»)

Arsalan Akhtar 25.05.2018 08:42
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
3
716
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Используйте функцию strtotime, чтобы получить дату:

$date = strtotime("Sep 5, 2018 15:37:25");
$remaining = $date - time();

Тогда $ Осталось количество оставшихся секунд. Затем вы можете разделить это число, чтобы получить количество дней, часов, минут и т. д.

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

Редактировать:

Увидев, что вам нужна дата из базы данных, см. Отредактированный ответ. Измените синтаксис mysql, чтобы он соответствовал синтаксису mysqli или PDO, если это то, что вы используете. Я рекомендую вам использовать mysqli_ или PDO, если вы еще этого не сделали, из-за mysql_ устарел.

Надеюсь это поможет.

Хотя вопрос. Если вы знаете время экзамена, что мешает вам просто использовать это время? В любом случае, я показал вам, как получить дату из базы данных.

Ответ принят как подходящий

Как вы упомянули в своем комментарии, вам нужно получить дату из своей базы данных, поэтому просто сохраните ее в каком-либо поле и получите в скрипте

<input type = "hidden" id = "dateFromDB" value = "<?php echo $dateFromDB;?>">

Я не могу сказать, как получить дату из базы данных, поскольку вы ничего не упомянули о своей базе данных в своем вопросе. Но я надеюсь, ты знаешь, как это сделать. Так что просто сохраните его в $dateFromDB. Получите это так

var dateDB = document.getElementById("dateFromDB").val();

И используйте dateDB вместо статической даты

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

Другие вопросы по теме