Как сделать обратный отсчет с помощью PHP - PullRequest
6 голосов
/ 22 декабря 2010

Я создаю сайт для свадьбы моих братьев. И пока все идет хорошо. Тем не менее, он хочет отсчет времени до свадьбы на главной странице;

Время, оставшееся до свадьбы: X месяцев, X дней, X часов.

Я бы предпочел сделать это с помощью php, но был бы открыт для других предложений.

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

Свадьба в субботу 30 июля.

Ответы [ 7 ]

6 голосов
/ 22 декабря 2010

Если вам нужно, чтобы ваш счетчик отображался только при обновлении страницы и был статичным после загрузки страницы, тогда PHP будет в порядке.

Если вам нужен обратный отсчет, чтобы обновляться при отображении страницы,вам нужно будет использовать JavaScript.

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

2 голосов
/ 20 февраля 2018

Ниже приведен фрагмент кода, который я скопировал с веб-сайта W3Schools , а также добавил мой PHP-код для получения метки времени «обратный отсчет времени» и метки «сейчас».

Вы увидите, что я закомментировал оригинальный код JavaScript и заменил его на PHP-код в двух местах, поэтому ясно, в чем разница между двумя вариантами.

В принципе, когда вы считаете, что «серверное время» более надежно в вашем случае, вы можете использовать подход PHP.

<!DOCTYPE HTML>
<html>

<head>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <style>
    p {
        text-align: center;
        font-size: 60px;
        margin-top: 0px;
    }
    </style>
</head>

<body>
    <p id="demo"></p>
    <script>
    // Set the date we're counting down to
    // 1. JavaScript
    // var countDownDate = new Date("Sep 5, 2018 15:37:25").getTime();
    // 2. PHP
    var countDownDate = <?php echo strtotime('Sep 5, 2018 15:37:25') ?> * 1000;
    var now = <?php echo time() ?> * 1000;

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

        // Get todays date and time
        // 1. JavaScript
        // var now = new Date().getTime();
        // 2. PHP
        now = now + 1000;

        // 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);

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

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

</html>
2 голосов
/ 22 декабря 2010

Для статического отсчета:

//A: RECORDS TODAY'S Date And Time
$today = time();

//B: RECORDS Date And Time OF YOUR EVENT
$event = mktime(0,0,0,12,25,2006);

//C: COMPUTES THE DAYS UNTIL THE EVENT.
$countdown = round(($event - $today)/86400);

//D: DISPLAYS COUNTDOWN UNTIL EVENT
echo "$countown days until Christmas";

?>
0 голосов
/ 19 февраля 2014

Попробуйте это

$wedding = strtotime("2014-02-20 12:00:00"); // or whenever the wedding is
$current=strtotime('now');
$diffference =$wedding-$current;
$days=floor($diffference / (60*60*24));

echo "$days days left";
0 голосов
/ 22 декабря 2010

попробуйте

<?php

    $target = mktime(0, 0, 0, 9, 25, 2011) ;//set marriage date

    $today = time () ;

    $difference =($target-$today) ;

    $month =date('m',$difference) ;
    $days =date('d',$difference) ;
    $hours =date('h',$difference) ;

    print $month." month".$days." days".$hours."hours left";

    ?>
0 голосов
/ 22 декабря 2010

Если вы хотите что-то в реальном времени, вам нужно будет использовать скрипты на стороне клиента, а именно JavaScript.

Вы можете сделать это на PHP, но это не будет "оживлять":

$wedding = strtotime("2011-07-01 12:00:00+0400"); // or whenever the wedding is
$secondsLeft = $wedding - time();
$days = floor($secondsLeft / 60*60*24);
$hours = floor(($secondsLeft - $days*60*60*24) / 60*60);
echo "$days days and $hours hours left";

Вы могли бы добавить больше математики на месяцы, но она становится нечеткой, потому что месяц не является фиксированным количеством времени.

Другим способом будет использование функции date() для выбора отдельных элементов (час, минута, секунда, день, месяц и т. Д.) И использование математики при наведении курсора, но для «приятного эффекта» очень сложно .

Дайте мне знать, если вы хотите пример JavaScript. Не беспокойтесь о jQuery - это канон убийства комара:)

0 голосов
/ 22 декабря 2010

Я бы не использовал php (серверный) для этого. Потому что вам нужно обновлять страницу каждый раз, чтобы увидеть счет. Предпочтительно использовать javascript (клиентская сторона) для этого более специфического jquery (структура javascript). И найдите плагин jquery, такой как: http://keith -wood.name / countdown.html

...