Вывести из базы 1 строку с шансом

215
04 декабря 2021, 12:30

У меня есть такой запрос

SELECT * FROM `prizes` WHERE `caseid` = '{$id}' AND `winner` = '0' ORDER BY RAND() LIMIT 1

Я получаю рандомный приз из базы, но есть проблема, при выдачи выдается рандом полный, т.е может 4 раза подряд выпасть дорогой приз а дешевый нет. Я добавил в таблицу параметр chance подскажите как мне получить так-же 1 строку из базы но уже сделать выборку не только рандомно но и по шансу. Шанс до 100, т.е если указано 90 выпадает чаще чем если указано 89 и наоборот. Если указано 10 выпадает реже если указано 90 но выпасть может.

В базе 11 тысяч призов.

Answer 1

1 За ORDER BY RAND() Вам могут отрубить руки, насколько я знаю.. Просто получите все элементы в переменную, а затем выбирайте рандомный приз средствами другого языка - сэкономите запросы.

2 Как раз с помощью серверного языка можно реализовать задуманное Вами. Допустим, м два этапа. Но рандом на то и рандом, что выбирает рандомно. Вот здесь подобный вопрос был

READ ALSO
Vk API PHP:Как получить фото от пользователя?

Vk API PHP:Как получить фото от пользователя?

Ну тоесть, мне нужно, если пользователь отправить фото, то бот его скачает, и сохранит, как такое реализовать?

180
Передача данных из формы в mysql!

Передача данных из формы в mysql!

Помогите пожалуйста почему не работаетОшибка - Информация не занесена в базу данных

190
Ошибка array_diff(): Argument #1 is not an array

Ошибка array_diff(): Argument #1 is not an array

Чем вызвана ошибка array_diff(): Argument #1 is not an array?

193
PHP: Почему бд возврашает пустой ответ

PHP: Почему бд возврашает пустой ответ

Я слелал класс для облегчения работы с бд:

136