php, mysql, фильтры

программирование php MySQL базы данных

Как правильно сформировать запрос к БД (php) с фильтрами?

Есть форма на странице, в ней несколько элементов (5 селектов, 1 чекбокс...)

Они представляют собой фильтр данных (город, дата... и т.д.)

После отправки формы, исходя от выбранных фильтров нужно сформировать запрос к БД.

Обыкновенный:

"SELECT * FROM users WHERE city='".$city."' AND date='".$date."'";

не получится, так как когда не будет выбран один с фильтров, то будет искать пустое значение в таблице.

$city = '';

SELECT * FROM users WHERE city=''

в итоге ничего не найдет

Надеюсь я понятно обьяснил ситуацию?

P.S. нужен работоспособный код, просто догадки не пишите, так как часто они не верны, и толку от них 0, если знаете как сделать то лучше напишите кодом. заранее благодарен. Делал с помощью условий, и оператора .= в зависимости от активного фильтра добавлял его к строке запроса

Примечание:
Нет, не понятно. Например, что мешает выполнять проверку входных данных средствами php?

На проверку чего?
Ответы:
> Надеюсь я понятно обьяснил ситуацию?
// массив всех возможных фильтров
$allow_filters = array('city','date','etc...');
Делается обычно примерно так:
1. Заводим себе массив
2. Проверяем каждый фильтр на пустоту значения, если не пустое, заносим в массив пару ключ-значение ($filters['city']='Moscow');
3. Напишем функцию, которая будет переводить этот массив в SQL представление. (синтаксис не проверял, надеюсь, общая идея будет ясна)
function parse_filters($filters)
{
$tmp_array = array();
foreach ($filters as $key => $value)
{
$tmp_array[]="`{$key}`='$value'"; //подготовим текстовые представления вида " `city`='Moscow' "


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.