как создать обратный счетчик в 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>
он работает, но таймер запускается с (5 сентября 2018 г. 15:37:25) Я не хочу запускать его с этой даты, я хочу начать дату из моей базы данных
этот код работает нормально. просто измените время на дату начала экзамена («Май 25, 2018 11:41:15»)






Используйте функцию 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();
Да, этот код выглядит нормально. Вы пробовали этот код? Есть ошибка?