Как показать таймер с помощью php?

код:

<html>
    <head>
        <title>Timer</title>
    </head>
<body>
    <?php
        $dbSessionDuration = "1:30:00";
        list($hour,$min,$sec) = explode(':', $dbSessionDuration);
        $dbSessionDurationTime = mktime(0,0,0,$hour,$min,$sec);
    ?>
    <div class = "count"></div>
    <script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script type = "text/javascript">
        var millis = <?php echo $dbSessionDurationTime; ?>
        function displaytimer(){
            var hours = Math.floor(millis / 36e5),
                mins = Math.floor((millis % 36e5) / 6e4),
                secs = Math.floor((millis % 6e4) / 1000);
                $('.count').html(hours+':'+mins+':'+secs);  
        }
        setInterval(function(){
            millis -= 1000;
            displaytimer();
        }, 1000);
    </script>
</body>
</html>

В этом коде я хочу создать таймер, и время начнется после 1:30:00, а затем оно будет уменьшаться на секунду, как 1:29:59, затем 1:29:58, как это, но теперь, когда я использую, чтобы получить время внутри class = "count", этого не происходит. Я не знаю почему? Итак, как я могу исправить эту проблему? пожалуйста, помогите мне.

Спасибо

Посмотрите на отладчик вашего браузера (F12) на наличие ошибки js.

RiggsFolly 09.08.2018 15:09

Я запускаю ваш код, нет проблем. Убедитесь, что mktime(0,0,0,$hour,$min,$sec); дает правильную миллисекунду. В противном случае ваш код js работает

sertsedat 09.08.2018 15:17
Стоит ли изучать 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
2
56
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

В вашем коде есть два примечания: -

-Если вы хотите преобразовать переменную из php в javascript, вы должны повторить ее внутри двойной / одинарной кавычки.
- вам нужно получить общее время в millis, поскольку вы используете этот millis для повторной регенерации вашего времени, поэтому это уравнение для преобразования вашего времени в миллис ( ( intval($hour) * 60 * 60 ) + ( intval($min) * 60 ) + ( intval($sec) ) ) * 1000.

Код

<html>
<head>
    <title>Timer</title>
</head>
<body>
    <?php
        $dbSessionDuration = "1:30:00";
        list($hour,$min,$sec) = explode(':', $dbSessionDuration);
        $dbSessionDurationTime =  ( ( intval($hour) * 60 * 60 ) + ( intval($min) * 60 ) + ( intval($sec) ) ) * 1000;
    ?>
    <div class = "count"></div>
    <script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"> 
    </script>
    <script type = "text/javascript">
        var millis = '<?php echo $dbSessionDurationTime; ?>';
        function displaytimer(){
            var hours = Math.floor(millis / 36e5),
                mins = Math.floor((millis % 36e5) / 6e4),
            secs = Math.floor((millis % 6e4) / 1000);
            $('.count').html(hours+':'+mins+':'+secs);  
        }
        setInterval(function(){
            millis -= 1000;
            displaytimer();
        }, 1000);
    </script>
</body>
</html>

Проблема в вашем преобразовании, он возвращает 949219200, где на самом деле он должен был вернуть 5400000

<html>
    <head>
        <title>Timer</title>
    </head>
<body>
    <?php
      $dbSessionDuration = "1:30:00";

      $time   = explode(":", $dbSessionDuration);

      $hour   = $time[0] * 60 * 60 * 1000;
      $minute = $time[1] * 60 * 1000;
      $sec    = $time[2] * 1000;

      $dbSessionDurationTime = $hour + $minute + $sec;

    ?>
    <div class = "count"></div>
    <script src = "https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script type = "text/javascript">
        var millis = '<?php echo $dbSessionDurationTime; ?>';
        function displaytimer(){
            var hours = Math.floor(millis / 36e5),
                mins = Math.floor((millis % 36e5) / 6e4),
                secs = Math.floor((millis % 6e4) / 1000);
                $('.count').html(hours+':'+mins+':'+secs);  
        }
        setInterval(function(){
            millis -= 1000;
            displaytimer();
        }, 1000);
    </script>
</body>

Теперь $dbSessionDurationTime будет содержать нужное количество миллисекунд 5400000. Вот рабочий код: https://codepen.io/anon/pen/EpGYKo, конечно, части php там нет, но вы можете видеть, что таймер работает так, как вы хотите.

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