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

Сервис обмена электронных валют


Генерация случайный неповторяющихся чисел

#11 ZiTosS

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

Отправлено 25 Апрель 2010 - 14:27

BaCo, а так ли это критично... Обычно ротаторы работают на случайном выборе, а не на показе, ещё не показанных. Это слишком жирно...
Если так уж нужно показывать уникальные баннеры. То создай табличку в БД с полями:
banners[
   id(INT 11) - уникальный идентификатор
   href(VARCHAR 255) - ссылка до баннера
   displays(INT 11) - количество показов баннера
]

Как выбирать баннеры которые ещё не были показаны? Да очень просто:
SELECT * FROM banners WHERE displays=(SELECT MIN(displays) FROM banners GROUP BY(displays)) ORDER BY RAND() LIMIT 1

Или так:
SELECT * FROM banners ORDER BY displays LIMIT 1

Но предпочитаю всё же первый, так как ротация, это всё же выбор случайного баннера, а во втором запросе они будут строиться по порядку поля id.
Сами понимаете, что после того, как получили запись баннера, надо увеличить у этой записи количество показов на один. Как это сделать, думаю, знаете.
  • 0

#12 BaCo

BaCo
    Topic Starter
  • Пользователь
  • 103 сообщений
  • Репутация: 0

Отправлено 01 Май 2010 - 10:18

Спасибо! Буду пользоваться
  • 0

#13 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 02 Май 2010 - 14:28

BaCo, всегда рады помочь :rolleyes:
  • 0


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