На сайте есть пользователи. И есть картинки. Для каждого пользователя и картинки есть своя таблица sql.
Есть страница, которая рандомно показывает картинку пользователю, после нажатия на кнопку далее должна появляться рандомно любая другая картинка, но ни в коем случае не та, что уже была.
Как сделать так, чтобы картинки не повторялись? Не нужен код, нужна именно логика как это сделать. Ничего в голову не приходит.
Мысль была создать массив переменной, который содержит все id просмотренных картинок, но картинок планируется ну очень много, и мне не кажется, что тогда код будет выполняться быстро как нужно
Исхожу из предположения, что картинок большое количество. Например, миллион:
1)При создании базы создается последовательность чисел для выдачи ID картинкам и перемешивается (например, чтобы номера шли 1, 2, 5, 3, 4). Можно побить на блоки по 100 тысяч. То есть в первом блоке будут перемешанные номера от 1 до 100 тысяч, во втором от 100 тысяч до 200 тысяч и т.д. При вставке картинки будет выбираться ID из этой последовательности.
2) При создании пользователя для него создается рандомная последовательность чисел из числа выданных ID картинкам. Например из 1000 чисел. После того, как пользователь просмотрит 1000 картинок, формируем вторую последовательность из 2го блока. Таким образом каждый пользователь выберет 10 тысяч случайных картинок из миллиона.
Если вдруг пользователь просмотрит все блоки, придется повторить по кругу. Тут полагаемся на то, что пользователь просмотревший 10 тысяч картинок все равно их не вспомнит. Вероятность выбрать повторные картинки из блока есть и не маленькая.
Структура таблиц получится примерно такая:
Pictures
--------
Id_picture, -- ID картинки из перемешанной последовательности
Image --Изображение
Users
--------
Id_user, -- ID пользователя
Name, -- Имя пользователя
Sequence, -- Массив с номерами картинок для выбора
Num_block, -- блок из которого выбираем номера
Num_seq -- номер картинки в последовательности
Если важно, чтобы новые картинки сразу добавлялись к отображаемым, то можно при выдаче ID картинкам оставить пропуски в разумном количестве и новыми картинками заполнять пропуски в уже существующих блоках.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Пожалуйста, приведите пример, как на PHP получить изображение из поста в Instagram с помощью Instagram API
Вот такое сообщение появляется на экране, в чем причина не пойму: You don't have permission to access /html on this server
В общем есть таблица {table}, в ней столбцы {id, price}, у некоторых товаров price = 0, что означает, что цена договорнаяЕсли я делаю SQL запрос с ORDER BY price ASC то первыми...