Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Вопрос знатокам PHP
цитата
13/07/13 в 15:03
 Nielsen
Есть такой простейший скрипт ротатора

Код:

<?php
$banners = array ();
$banners[1] = '<a href="Ссылка перехода №1"><img src="Баннер №1"></a>';
$banners[2] = '<a href="Ссылка перехода №2"><img src="Баннер №2"></a>';
$banners[3] = '<a href="Ссылка перехода №3"><img src="Баннер №3"></a>';
echo $banners[array_rand ($banners)];
?>


модифицировать так чтоб ротировал не рандомно а по очереди 1,2,3,1,2,3 и т.д.
цитата
13/07/13 в 15:53
 ibiz
просто так скриптом сделать нельзя, где-то надо хранить предыдущее значение
цитата
13/07/13 в 17:13
 CABMIT
Всё верно, например в куке
цитата
13/07/13 в 22:46
 pipe
А смысл? Всё равно получится почти рандомно, на больших числах. Или имеется в виду, одному и тому же посетителю последовательно показывать? Тогда да, кука или сессия. Уточни вопрос.
цитата
14/07/13 в 15:51
 amccc
Я так понял что у него задача показать все баннеры каждому юзеру.
Через сессию корректнее, сессии можно верить хотя бы.

Код:
session_start();

$banners = array ();
$banners[] = '<a href="Ссылка перехода №1"><img src="Баннер №1"></a>';
$banners[] = '<a href="Ссылка перехода №2"><img src="Баннер №2"></a>';
$banners[] = '<a href="Ссылка перехода №3"><img src="Баннер №3"></a>';

$cur = $_SESSION["shown_banner"] = (++$_SESSION["shown_banner"] >= count($banners) ? 0 : $_SESSION["shown_banner"]);
echo $banners[$cur];



session_start должна вызываться в начале скрипта, до любого вывода (посылает куку).
цитата
14/07/13 в 15:59
 Nielsen
pipe писал:
А смысл? Всё равно получится почти рандомно, на больших числах. Или имеется в виду, одному и тому же посетителю последовательно показывать? Тогда да, кука или сессия. Уточни вопрос.


нужно чтоб все баннеры были показаны одинаковое количество раз,
ну или как вариант возможность выставить процентно показ каждого баннера так даже еще круче
цитата
14/07/13 в 16:01
 Nielsen
amccc писал:
Я так понял что у него задача показать все баннеры каждому юзеру.


все верно юзер ходит по страницам и ему показваем по очереди все банеры
цитата
14/07/13 в 19:48
 tubscen
Nielsen писал:
все верно юзер ходит по страницам и ему показваем по очереди все банеры

ну тогда как выше сказали - хранить текущий счетчик простмотров тсраниц в куках и показывать по порядку -

Код:
<?php
$banners = array ('<a href="Ссылка перехода №1"><img src="Баннер №1"></a>','<a href="Ссылка перехода №2"><img src="Баннер №2"></a>','<a href="Ссылка перехода №3"><img src="Баннер №3"></a>');
//кстати, забудь о том, чтобы начинать массив с 1 - индексы начинаются с нуля блять, надо привыкнуть
$myfuckingviews=0+$_COOKIE['myfuckingviews'];
setcookie ( 'myfuckingviews', $myfuckingviews+1, 0, '/', $_SERVER['HTTP_HOST']);

//*** после того, как будут отданы все HTTP заголовки и начнетсся выдача содержимого страницы
echo $banners[$myfuckingviews % count($banners)];

?>


Эта страница в полной версии