Перейти к содержимому



Запрос на показ баннера по времени

#1 1putnik
1putnik
  • Неактивные
  • 96 сообщений
  • Репутация: 8
0

Обновлено 01 октября 2015 - 11:26  Отправлено 01 сентября 2015 - 22:07

Привет всем мебмастерам.

Помогите решить задачку. Хочу на сайте сделать показ банеров по времени.
Делаю такой запрос:

$time	= date(G);
$sql = 'SELECT * FROM banner WHERE (start <= '.$time.' AND end >= '.$time.') OR (start = 0 AND end = 0) ....';

$time - часы в формате 0-23
start - время начала показа
end - время окончания показа

Если, допустим, нужно показать баннер с 8 до 23, то всё нормально работает, с 00:00 до 8:00 баннер не показывается.
А если установить часы с 8 до 2, то баннер вообще показываться не будет.
Как сделать правильный запрос, что-бы баннер показывался с 8 утра и до 2 часов ночи, а так-же если нужно с 8 до 23.
Чуствую, что решение простое, математическое, но никак не могу решить, пробывал по всякому. Это первый вопрос.

И второй вопрос - как сделать, что-бы время $time было не серверное, а время компьютера пользователя в том же формате 0-23 и как передать это на сервер?


 

 

  • 0

#2 Info-Mans
Info-Mans
  • Пользователь
  • 1 241 сообщений
  • Репутация: 125

Отправлено 02 сентября 2015 - 01:01

А может попробовать с помощью switch сделать, если $time попадает в интервал, то баннер выводится, а если нет, то не выводится?

 

По поводу второго вопроса, на сколько я знаю браузер не передает такую информацию. Вроде бы на javascript можно реализовать, но увы пока я в нем не селен)


Сообщение отредактировал Info-Mans: 02 сентября 2015 - 01:04

  • 0

»»» Начни изменять свою жизнь с внешнего вида «««
        Буду рад вашим комментариям на блоге!



#3 1putnik
1putnik
    Topic Starter
  • Неактивные
  • 96 сообщений
  • Репутация: 8

Отправлено 02 сентября 2015 - 10:57

А как сделать интервал с 8 до 2 ? Как объяснить серверу, что 12, например, больше 8 и меньше 2 (8 < 12 и 12 < 2) ? 


  • 0

#4 Info-Mans
Info-Mans
  • Пользователь
  • 1 241 сообщений
  • Репутация: 125

Отправлено 02 сентября 2015 - 11:26

@1putnik, можно такой вариант 

switch($time){
	case 7:
	case 6:
	case 5:
	case 4:
	case 3:
	case 2:
		echo "Не выполняем"; break;
	default:
		echo "Выполняем запрос";
}

Сообщение отредактировал Info-Mans: 02 сентября 2015 - 11:36

  • 0

»»» Начни изменять свою жизнь с внешнего вида «««
        Буду рад вашим комментариям на блоге!



#5 1putnik
1putnik
    Topic Starter
  • Неактивные
  • 96 сообщений
  • Репутация: 8

Отправлено 02 сентября 2015 - 16:30

Дак это же получится условие для показа одного баннера. А у меня их несколько. У всех разное время.

И при добавлении, через форму выставляется время начала и окончания показа.


  • 0

#6 1putnik
1putnik
    Topic Starter
  • Неактивные
  • 96 сообщений
  • Репутация: 8

Отправлено 29 сентября 2015 - 13:10

Всё!!! Решил первую задачку.
Составил таки правильный запрос.

$time	= date(G);
$sql = 'SELECT * FROM banner WHERE (start > end AND (start <= '.$time.' OR '.$time.' < end)) OR (start < end AND (start <= '.$time.' AND '.$time.' < end)) OR (start = 0 AND end = 0) ....';

Т. е. выполняется то или иное условие, в зависимости от того, что start > end или start < end.
Как и предпологал - решение простое.

Теперь осталось решить вторую задачку со временем компьютера пользователя.


Сообщение отредактировал 1putnik: 29 сентября 2015 - 13:14

  • 0

#7 1putnik
1putnik
    Topic Starter
  • Неактивные
  • 96 сообщений
  • Репутация: 8

Отправлено 01 октября 2015 - 11:26

Вот и вторую задачку решил. С помощью java-скрипта определяется время компьютера пользователя и с помощью GET-запроса передает в PHP-файл script.php переменную $time.
Этот код нужно поставить на ту страницу, где должен показываться баннер:

<script type="text/javascript">
var h = new Date();
var ch = (h.getHours());
document.write('<sc'+'ript src="script.php?time='+ch+'"></sc'+'ript>');
</script>

А это нужно вставить в файл script.php, где делается запрос к БД:

$time = $_GET['time']; //это вместо $time = date(G); 		
### здесь запрос к БД ###
echo "document.write('<img src=".$a[banner].">');";

Это конечно не совсем точно как у меня, но понимающий исправит, если захочет воспользоваться.


Сообщение отредактировал 1putnik: 01 октября 2015 - 11:57

  • 0



Похожие темы
  Название темы Автор Статистика Последнее сообщение

Пользователь месяца
Megoydagi Megoydagi 1-й за Август
Очков активности: 30 4 темы, 8 сообщений, 1 балл репутации
Сайт: bank.net.ru
ТОП самых активных за этот месяц
  • Фотография Vmir
    #1

    Vmir
    Очков активности: 48 3 темы, 7 сообщений, 2 балла репутации

  • Фотография BLIK
    #2

    BLIK
    Очков активности: 40.5 Вне конкурса за определение пользователя месяца

  • Фотография SergiuS85
    #3

    SergiuS85
    Очков активности: 12 2 темы, 2 сообщения, 1 балл репутации

  • Фотография WGN
    #4

    WGN (worldgamenews.com)
    Очков активности: 12 1 тема, 5 сообщений, 1 балл репутации

  • Фотография Totti
    #5

    Totti
    Очков активности: 12 0 тем, 8 сообщений, 1 балл репутации

  • Фотография kuztoday
    #6

    kuztoday
    Очков активности: 10.5 1 тема, 4 сообщения, 1 балл репутации

  • Фотография Zevss
    #7

    Zevss (domles43.ru)
    Очков активности: 10.5 2 темы, 1 сообщение, 1 балл репутации

  • Фотография Sale_account
    #8

    Sale_account
    Очков активности: 10.5 2 темы, 1 сообщение, 1 балл репутации

  • Фотография Megoydagi
    #9

    Megoydagi (bank.net.ru)
    Очков активности: 9 Вне конкурса за определение пользователя месяца

  • Фотография mkreine
    #10

    mkreine (analiz-krovi.net)
    Очков активности: 9 1 тема, 3 сообщения, 1 балл репутации

  • Показать весь ТОП 10

Поддержите форум! =)
Топ 5 участников по репутации

Оформление форума – IPBSkins.ru