@webmastergg

Как сделать фильтр полей таблицы из базы данных как в интернет магазине?

Здравствуйте, возникла необходимость написания фильтра полей, есть 2 вопроса...
1) где лучше хранить значения полей фильтра если они меняются пользователем? В cookie?
2) как создается логика выборки? т.е. если поле изменено и != стандартному значению...

$results = $mysqli->query("SELECT id, num_z, date_z, warning_state, fio_z, object_z, close_date, color_z, state_z, description_z FROM `zayavki` WHERE `date_z`>='".$dateot."'");

Понятно как фильтровать по конкретным полям, но если из них выбраны только несколько - ...
Проверять существование переменных? Или есть более нормальные пути..

5c08c7504b777830746089.png

Как пример любой сайт интернет-магазина где сортируется каталог товаров.
  • Вопрос задан
  • 25 просмотров
Пригласить эксперта
Ответы на вопрос 2
l3ftoverz
@l3ftoverz
Люблю front-end
но если из них выбраны только несколько - ...Проверять существование переменных?


В вашем случае скорее всего делать группу if-elseif блоков, где проверять наличие параметра фильтра и составлять запроc. Более "нормальные" пути - это всякие ORM, обёртки которые сами могут всё разобрать, ты им только параметры запроса дай (хотя в итоге делают одно и то же, просто это скрывается за слоем абстракции)
Ответ написан
@dimoff66
Кратко о себе: Я есть
Есть нюансы, но в целом примерно так
$filters = [
    ['name' => 'order_number', 'condition' => '=', 'field' => 'order', 'default' => ''],
    ['name' => 'object', 'condition' => '=', 'field' => 'object', 'default' => 'Все'],
    ['name' => 'urgent', 'condition' => '=', 'field' => 'urgent', 'default' => false],
];

$conditions = '';
foreach ($filters as $filter) {
    $value = $_POST[$filter['name']];
    if($value = $filter['default']) continue;
    
    $conditions .= ' ' . $filter['field'] . $filter['condition'] . $value;
}

if($conditions !== '') $conditions = ' WHERE ' . $conditions;
Ответ написан
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы
Интерно Ростов-на-Дону
от 35 000 до 45 000 руб.
Алгоритмика Москва
от 110 000 до 160 000 руб.
Blogman Оренбург
от 20 000 до 110 000 руб.