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

Реферальная программа Мегаплана

Партнерская программа Kredov

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

#1 1putnik

1putnik
  • Пользователь
  • 96 сообщений
  • Репутация: 8
0

Отправлено 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

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85
Советую обратить внимание на следующее:
  1. Показ баннеров
  2. Продаются баннерные показы в соц. сети
  3. Продаю баннерные показы RLE

#2 Info-Mans

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

Отправлено 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 177 сообщений
  • Репутация: 112

Отправлено 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


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