Как показать / скрыть баннер на основе его from_date и end_date в PHP?

Я пытаюсь работать над индексной страницей и вносить незначительные изменения в указанную страницу. В настоящее время у меня есть раздел управления баннерами в панели администратора, где я могу загрузить изображение вместе с заголовком. Таким образом, моя индексная страница будет показывать все введенные баннеры в виде слайд-шоу.

Однако я старался сделать его более организованным. Для этого я отредактировал базу данных и добавил такие поля, как banner_id, имя баннера, Fromdate, EndDate и bannerimage. Однако вместо отображения всего содержимого баннера я хочу отображать изображение баннера на основе даты и времени, которые я добавил в базу данных.

есть ли способ отсортировать этот метод фильтрации? Я пытаюсь учиться и импровизировать самостоятельно, но опять же из-за того, что я все еще новичок и знаю логическое приложение, которое мне не удается реализовать с умом.

---- Это текущий код, который я должен обрабатывать со слайдом ---

$image_dir = "$_SERVER[DOCUMENT_ROOT]/images/img"; // directory on server
$image_relative_path = 'images/img'; // path to images relative to script
$file_types = array('jpg', 'jpeg', 'gif', 'png');
$image_time = '10000'; // seconds each image will display (4000 = 4 seconds)
$image_rotation ='';

if ($handle = opendir($image_dir)) {
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") {
            $ext_bits = explode(".", $file); // finds file extensions
            foreach ($ext_bits as $key => $value) {
                if (in_array($value, $file_types)) { 
                    $image_rotation .= '<div data-p = "170.00"><img data-u = "image" src = "'.$image_relative_path.'/' . $file . '"/></div>';
                }
            }
        }
    }
    closedir($handle);
}

?>

<div class = "container">
<div id = "jssor_1" style = "position:relative;margin:0 auto;top:0px;left:0px;width:1300px;height:500px;overflow:hidden;visibility:hidden;">
    <!-- Loading Screen -->
    <div data-u = "loading" class = "jssorl-009-spin" style = "position:absolute;top:0px;left:0px;width:100%;height:100%;text-align:center;background-color:rgba(0,0,0,0.7);">
        <img style = "margin-top:-19px;position:relative;top:50%;width:38px;height:38px;" src = "images/spin.svg" />
    </div>
    <div data-u = "slides" style = "cursor:default;position:relative;top:0px;left:0px;width:1300px;height:500px;overflow:hidden;">
        <?php echo $image_rotation; ?>
    </div>

---- Приведенный выше код работает нормально, но не дает мне права показывать / скрывать баннер на основе дат, введенных в базу данных. ---

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

Итак, допустим, я загружаю 10 баннеров, я не хочу, чтобы он сразу отображался на странице индекса, я хочу, чтобы он отображался в пределах дат, указанных в базе данных.

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

BARNOWL 10.12.2018 18:11

Вы можете сделать это либо в SQL, либо в PHP. Я бы рекомендовал сделать это через SQL. Удачи!

maio290 10.12.2018 18:11

звучит так, как будто вам нужен SQL-запрос, который вернет вам некоторые данные с предложением WHERE, чтобы ограничить его датой и временем. Вы говорите «на основе» даты и времени, но это недостаточно конкретный критерий, который мы можем использовать, чтобы фактически показать вам запрос ... вам нужно было бы точно сказать, какими будут входные данные и ожидаемый результат. Вероятно, проще, если бы вы показали нам любой код, который вы уже пробовали, и объяснили, что идет не так.

ADyson 10.12.2018 18:12

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

RiggsFolly 10.12.2018 18:13

вы уже пытались написать запрос?

ADyson 10.12.2018 18:21

вам следует избегать встроенного CSS - это плохая практика, которая может привести к неожиданному поведению DOM (например, спецификация CSS) - его также сложнее поддерживать

treyBake 10.12.2018 18:23

Ну, я попробовал несколько разных подходов, но это не сработало, как ожидалось.

ConfusedFreak 10.12.2018 18:23

Покажите, что вы пробовали, а что «не сработало, как ожидалось».

treyBake 10.12.2018 18:23

@TreyBake Учтите это и благодарим вас за совет :). Метод, который я пробовал, состоял в том, чтобы вызвать дату, и я попытался разделить день, месяц и время по отдельности в переменной и попытался перекрестно проверить его с текущей датой аналогичным образом, но я предполагаю, что это не был фактический способ его реализации. . Таким образом, мне пришлось удалить его. Что-то вроде $ day = date ('d', strtotime ($ row ['date'])); $ month = date ('m', strtotime ($ row ['date'])); if ($ day == date ('d') && $ month == date ('m')) это не полный код, но это то, как я пытался фильтровать дату.

ConfusedFreak 10.12.2018 18:25

вы можете сравнить datetime и узнать, находится ли оно до / после диапазона, используя <= (меньше или равно) и >= (больше или равно), и использовать даты таким образом :)

treyBake 10.12.2018 18:30

О, да, я думал об этом, но я сам не много писал на PHP, я только повторно использовал и редактировал существующий код и учился самостоятельно. Поэтому я не уверен, как это реализовать. # подчеркнуто :(

ConfusedFreak 10.12.2018 18:33
Стоит ли изучать 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
11
177
1

Ответы 1

Поскольку это помечено PHP, я дам ответ PHP.

С PHP вы можете сравнивать DateTime, используя различные операторы сравнения.

Для вашего случая лучше всего использовать <= (меньше или равно) и >= (больше или равно).

Ваша логика по сути будет:

если дата больше или равна DateA и меньше или равна DateB - показать баннер.

<?php
    $today = date('Y-m-d H:i:s');

    $dateA = date('Y-m-d H:i:s', strtotime('13 Nov 2018'));
    $dateB = date('Y-m-d H:i:s', strtotime('21 Dec 2018'));

    echo $today. '<br />';
    echo $dateA. '<br />';
    echo $dateB. '<br />';

    if ($today >= $dateA && $today <= $dateB) {
        echo 'show banner';
    }

Здесь мы используем встроенные функции PHP Дата и strtotime для объявления сегодня, DateA (начало диапазона) и DateB (конец диапазона). Я использовал диапазон, который, как я знаю, будет отображать баннер только для примера.

Примечание: это не решение для копирования и вставки, это просто показывает вам ответ на вашу проблему, который вы можете отредактировать / настроить в соответствии с вашим кодом :)

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