$select = ' select * from processors ';
$where = array();
if (!empty($_GET['type'])) {
$where[] = "type = '{$_GET['type']}'";
}
... и таким макаром все фильтры
if (!empty($where)) {
$select .= ' where ';
$select .= implode(' and ', $where);
}
... получаем селект со всеми использованными фильтрами.
я не к тому чтоб ты шел курить мануалы на неделю.
в пдо разобраться займет полчаса от силы, по примерам.
а дальше пофиксить твой код будет совсем уже просто.
65536: лично у меня в голове парсер кода работает примерно так, когда видит присваивание с тернарным оператором:
$x = isset($x) ? $x : $default;
присваиваем переменной $x значение, которое вернет тернарный оператор, в данном случае это либо $x, если переменная определена, либо $default в противном случае.
главное в этой строке, суть ее - мы присваиваем значение переменной $x.
и твой вариант:
isset($x) || $x = 123;
выражение вернет true, если $x определена, либо присвоит ей значение 123 и вернет результат оператора присваивания, то есть сам $x.
а куда вернет, зачем?
суть строки размывается, поэтому не надо так делать.
65536: скобки надо во имя читаемости и защиты от невнимательности.
тернарный не то чтобы идеал, просто распространенная конструкция, читается достаточно легко, "длиннее печатать" в настоящее время вообще не аргумент.