Сложный запрос или альтернатива

Reylonds

Новичок
Сложный запрос или альтернатива

Для составления отчета имеется форма с 7-ю позициями(код магазина, код продавца, наименование и др.) которые необходимо отмечать галочками.

Допустим необходимо сделать отчет по конкретному магазину(ставим галочку в первом чекбоксе) и по наименованию(ставим галочку в третьем чекбоксе и например выбираем «шуба» из выпадающего списка). – в этом проблемы нет.
Проблема в том, что возможно более 100 вариантов как могут быть выбраны галочки и писать длинный код программы неохота, да и не рационально.

Подскажите пожалуйста способ решения данной проблемы.
 

Фанат

oncle terrible
Команда форума
PHP:
$w=array();
if (!empty($_GET['rooms'])) $w[]="rooms='".mysql_real_escape_string($_GET['rooms'])."'";
if (!empty($_GET['space'])) $w[]="space='".mysql_real_escape_string($_GET['space'])."'";
if (!empty($_GET['price'])) $w[]="rooms='".mysql_real_escape_string($_GET['price'])."'";

if (count($w)) $where="WHERE ".implode(' AND ',$w); else $where='';
$query="select * from table $where";
 

zerkms

TDD infected
Команда форума
маленькая ремарка: аргумент для слияния в implode идёт на первой позиции
 

Reylonds

Новичок
спасибо, вроде понятно. сейчас попробую

-~{}~ 30.05.06 14:32:

запрос идет по двум таблицам, тогда код будет выглядить так? а как добавить связь этих таблиц по коду товара?
перед $query добавить в переменную were "таблица1.код=таблица2.код"?
PHP:
$w=array(); 
if (!empty($_GET['rooms'])) $w[]="table.rooms='".mysql_real_escape_string($_GET['rooms'])."'"; 
if (!empty($_GET['space'])) $w[]="table.space='".mysql_real_escape_string($_GET['space'])."'"; 
if (!empty($_GET['price'])) $w[]="table.rooms='".mysql_real_escape_string($_GET['price'])."'"; 

if (count($w)) $where="WHERE ".implode(' AND ',$w); else $where=''; 
$query="select * from table,table2 $where";
 

Wicked

Новичок
да.

но кроме этого, я бы использовал join:
[sql]... from table1 inner join table2 on (table1.code = table2.code) where ...[/sql]
 
Сверху