1. Вкладка: Купить персонажа, колонка таблицы Стоимость.
2. В фильтре требуется указать стоимость персонажа.
3. Должно работать так: указываешь 990, выдаётся список персонажей, стоимость которых точно равна 990, не 1990, не 2990, а только 990.
Это должно быть понятно, что если человек вводит 990, то он больше денег не имеет. Тем более поле int, и применять в запросе к int полю like %smth% это что-то из ряда вон выходящее.
При этом, если мы указываем цену 990, то мы должны увидеть список персонажей которые нам обойдутся в 990 бонусов, а не список персонажей, которые нам обойдутся 1089 с учётом % сервера за выкуп. Тоесть при фильтре мы должны сделать так: указываем 990 бонусов, в это время в запросе будет
Код:
SELECT * FROM table WHERE price = :userPrice;
// userPrice = userInputPrice / 1.1;(в случае если у нас комиссия 1.1)
// userInputPrice - это та цена, которую пользователь ввёл в поле фильтра в лк.
В итоге получаем корректно работающий запрос. Т.к. я понимаю что в БД мы храним цены без учёта комиссии, ровно такие цены, какие выставили игроки у себя. Но ищем то мы персонажей с учётом комиссии. Поэтому это надо сделать так. И убрать LIKE в запросе.
![](http://jpegshare.net/images/17/ed/17ed33a233071375bc9f1f1837ed22fb.jpg)
Спасибо
А вообще по хорошему должны быть ещё выпадающие списки расы, с возможностью выбора конкретной расы, а не группы рас.
Также предлагаю сразу тут, если будете переделывать со стоимостью, то введите дополнительный парсер знака перед суммой, например, вводим строк "<1300" и запрос уже будет выглядеть так:
Код:
SELECT * FROM table WHERE price = :userPrice;
или сделайте рядом выпадающий список доступных знаков, < > >= <= = чтобы можно было выбрать и применить к стоимости. Так будет удобнее.
![](http://jpegshare.net/images/91/0f/910f6f929e9e67d94c59ef55ffce0f14.jpg)
Если возникнут вопросы по реализации, я могу помочь, если что т.к. подобное уже делал в другом своём проекте, но вместо стоимости у меня была дата, но суть одна и таже и знаю что сделать это легко, если не лень, а игрокам будет удобнее. И шанс что они найдут то, что хотят и купят, будет в разы больше.
Упрощённо-наглядное моё решение аналогичной проблемы
Код HTML:
<div class="row">
<div class="col-sm-4">
<label for="dateSign">Условие</label>
<select class="form-control" id="dateSign" name="dateSign">
<option value="eq">=</option>
<option value="lt"><</option>
<option value="gt">></option>
<option value="le">≤</option>
<option value="ge">≥</option>
</select>
</div>
<div class="col-sm-8">
<label for="date">Дата</label>
<input class="form-control" type="date" id="date" name="date">
</div>
</div>
PHP код:
if (!empty($_POST['date'])) {
$date_ymd = Transform::dateToYMD($_POST['date']);
if (isset($_POST['dateSign'])) {
switch ($_POST['dateSign']) {
case 'lt':
$sign = '<';
break;
case 'gt':
$sign = '>';
break;
case 'le':
$sign = '<=';
break;
case 'ge':
$sign = '>=';
break;
default:
$sign = '=';
break;
}
}
$query .= ' AND date ' . $sign . ' "' . $date_ymd . '"';
}
[свернуть]