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


Пользователь месяца
TimurR TimurR 1-й за Август
Очков активности: 726 3 темы, 35 сообщений, 11 баллов репутации
ТОП самых активных за этот месяц
  • Фотография ShowPrint
    #1

    ShowPrint (ShowPrint.ru)
    Очков активности: 207 2 темы, 17 сообщений, 6 баллов репутации

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

    Ixman (o5cat.ru)
    Очков активности: 105 0 тем, 10 сообщений, 7 баллов репутации

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

    WGN (worldgamenews.com)
    Очков активности: 90 Вне конкурса за определение пользователя месяца

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

    magnet (rbfxdirect.com)
    Очков активности: 67.5 Вне конкурса за определение пользователя месяца

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

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

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

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

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

    AnnaYa (topbase.ru)
    Очков активности: 36 2 темы, 6 сообщений, 2 балла репутации

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

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

  • Фотография Алексей111
    #9

    Алексей111
    Очков активности: 33 6 тем, 4 сообщения, 1 балл репутации

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

    fedornabilkin (zaka4ano.ru)
    Очков активности: 24 0 тем, 4 сообщения, 4 балла репутации

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

Kwork.ru - услуги фрилансеров от 500 руб.

Поддержите форум! =)
Апдейты
  • Яндекс тИЦ: 19.11.2017
  • Яндекс выдача: 26.09.2018
Топ 5 участников по репутации


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

#1 1putnik

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

Отправлено 01 September 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
  • Пользователь
  • 1241 сообщений
  • Репутация: 124

Отправлено 02 September 2015 - 01:01

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

 

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


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

  • 0

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



#3 1putnik

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

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

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


  • 0

#4 Info-Mans

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

Отправлено 02 September 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 September 2015 - 11:36

  • 0

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



#5 1putnik

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

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

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

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


  • 0

#6 1putnik

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

Отправлено 29 September 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 September 2015 - 13:14

  • 0

#7 1putnik

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

Отправлено 01 October 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 October 2015 - 11:57

  • 0



Похожие темы

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

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