kostya_dev
@kostya_dev
dev

Как реализовать сервис случайной выдачи?

Добрый день, друзья.

Думаю все знают такой сайт как Кинопоиск. У них есть раздел "Случайный фильм" (kinopoisk.ru/chance) Может ли кто-то подсказать, как реализован этот сервис? Может есть ссылки с информацией по подобным сервисам. А то не особо представляю как даже вопрос задать в поисковик.

Спасибо.
  • Вопрос задан
  • 336 просмотров
Решения вопроса 2
rework
@rework
Помог ответ? В благодарность отметь его решением
Что бы понять как это работает, посмотрите на AJAX запросы, которые подгружают случайные фильмы:

https://www.kinopoisk.ru/view_random_film.php?toke...

В запросе передаются все параметры, в зависимости от выбранных вами фильтров, в ответ приходит массив из 5-ти случайных фильмов которые подошли по указанным параметрам:

59def86719e34127718821.jpeg

На сервере, наверняка, список случайных фильмов выбирается простым запросом к базе, с использованием RAND функции.

Стоит обратить внимание, что запрос делается на 5 фильмов вперёд, что бы показывать пользователю без задержек, т.е. когда он нажимает кнопку "случайный фильм" ему показываются фильмы по порядку из предыдущего ajax-запроса, а новый запрос уже выбрал 5 следующих новых фильмов и они находятся в памяти на клиенте (в переменной JavaScript'а), как только пользователь прошёл 5 фильмов, идёт новый запрос на сервер, а пользователю показываются фильмы загруженные ранее предыдущим запросом.

Для визаульного "ВАУ-эффекта" вы можете использовать какой-нибудь JS-плагин, слайдер контента, например www.menucool.com/responsive-slider. Либо можно написать анимацию смены слайдов самому с использованием css transition.
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.ru
Проще всего, делать "перетасовку колоды оставшихся карт" при каждом запросе (с "отбрасыванием"/изъятием просмотренных карт из колоды):
1. Перемешиваем, берём N первых элементов перемешанного массива (сколько записей нужно показать за один запрос; для PHP - функция array_shift()) и показываем записи с этими ID-шниками (ID - это значение элемента).
2. Исключаем те, что уже отобразили (для PHP - функция array_shift()) и сохраняем просмотренные элементы массива в переменную сессии.
3. При следующей выборке - убираем просмотренные элементы из всего списка элементов.
4. GOTO 1.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Вам нужен простой генератор случайных чисел. Смысл таков.
Есть массив с данными, от 1 до 1000 например. запускаете генератор случайных чисел от 1 до 1000, и выданное число это и будет элемент массива. А все остальное это просто доп проверки, которые сужают массив.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
18 июля 2018, в 22:20
4000 руб./за проект
18 июля 2018, в 21:54
1000 руб./в час