2013-05-27 7 views
1

Запись небольшого фильтра в PHP/sql. Пользователь выбирает из двух параметров фильтра, однако у них также есть возможность выбрать «все» в фильтре, в основном просто делая запрос не фильтровать этот результат.SQL-запрос, где filter = *

Используя основной метод WHERE запроса выглядит следующим образом

$query = ("SELECT * FROM user WHERE userid = '$userid' AND department = '$department'"); 

Как бы приспособить это, чтобы сделать фильтр вернуть все результаты для конкретного фильтра? как написание кучки if if-выражений в php кажется громоздким.

+0

Инструкция использования Switch - php.net/manual/en/control-structures.switch.php –

ответ

1
$expected_filters = array(
    // 'mysql_column'=>'php_variable', 
    'userid'=>'userid', 
    'department'=>'department', 
); 


$final_filters = array(); 

foreach ($expected_filters as $k => $v) { 
    if (isset($_POST[$v]) && trim($_POST[$v])) { 
    $final_filters[] = sprintf("%s= '%s'", $k, $v);  
    }  
} 

$where = ''; 

if (count($final_filters)>0) { 
    $where = implode(' AND ', $filter); 
    $where = ' WHERE ' . $where; 
} 

$query = ("SELECT * FROM user $where");