@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

Как пример любой сайт интернет-магазина где сортируется каталог товаров.
  • Вопрос задан
  • 48 просмотров
Пригласить эксперта
Ответы на вопрос 1
@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;
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы