Будем жевать.
Код:
Код: Выделить всё
<a href="http://my.site.com/b.php?i=56757542453632323&s=3212">
<img src="http://my.site.com/banner.jpg?i=56757542453632323&s=3212" />
</a>
В БД имеется запись под номером 3212, к которой привязана одна ссылка и, возможно, несколько картинок. Какие картинки показывать для этой ссылки - не важно, раз клиент их несколько привязал, поэтому выбираем рандомом. Картинку показали. Посетитель тыкает в баннер и переходит по ссылке
b.php?... Этот скрипт смотрит в запись под номером 3212 и переадресует на нужный сайт, увеличивая счётчик.
Теперь по вопросу "как менять ссылки".
Вот имеется у вас в БД, скажем, 5000 записей. Рекламодатели ставят ваш скриптик, который это число
s= будет генерировать рандомно. Предположим, в какой-то конкретный момент выбирается число 1726. В БД запись есть, поэтому никаких проблем.
Далее, если такой записи уже нет (кончилась рекламная компания). Тогда и картинку, и ссылку нужно брать под номером, ближайшим сверху к данному числу. Т.е. нет 1726, поэтому php-скрипт будет возвращать и картинку, и ссылку на запись под номером 1727 (или какая там следующая существует). Тоже нет проблем.
Проблема следующая - количество рекламодателей увеличилось свыше 5000. Скажем, их стало 20000, а какой-то сайт по-прежнему генерирует число до 5000 и таким образом не даёт показать баннеры под записями от 5 до 20 тыс.
Тогда надо сразу JS генерировать большое число
s. Пусть будет в интервале до 500.000. Разумеется, соответствующего количества записей нет, но ведь количество известно ("SELECT COUNT(*) FROM banners"). Поэтому мы берём число s и делим с остатком на количество записей:
$num = $s % $num_banners. Далее вопросы сводятся к предыдущим двум абзацам.
Если нужно ещё тематическое разделение и прочий таргетинг, то не изобретайте велосипед, а разберитесь лучше с готовым скриптом, предложенным выше
