поиск mysql

RO
На сайте с 13.07.2009
Offline
88
382

сам поиск сделать не сложно, но мне нужно сделать поиск только по тем полям что были отправлены (чел выбирает категорию товара, цвет, наличие на складе etc), тоесть:

(select * from content where pole1='$_POST['pole1']' and pole2='$_POST['pole2']' and pole3='$_POST['pole3']')

если он выберет все пункты из формы, тоесть чел знает чего хочет, то это нормально, если же он выберет только цвет, то остальные поля будут pole2='' and pole3='' а это значит уже ни одного результата, так как пустых полей в бд нет. Как сделать чтобы если чел выбрал только цвет то и запрос был с только одним условием (select * from conten twhere pole1='$_POST['pole1']')? выход конечно есть - извратится с ветвлением иф-елс, но все таки может есть более нормальный способ?

ps: если делать : 'Начало запроса'.(empty($_POST['pole'])?'':'pole="value"').'Пордолжние';

тогда получается проблема с and & or если послано один параметр:

where '.(empty($_POST['color'])?'':'color="'.cut($_POST['color']).'" '.$all.'').' тоесть получается запрос вида where color='color' or order by sort desc, если несколько включая последний который не имеет and или or то все ок.

AlikZP
На сайте с 22.11.2009
Offline
107
#1

Собирайте в массив. Например

$query = array();

if (!empty($_POST['pole1'])) $query[] = 'pole1='.$_POST['pole1'];
if (!empty($_POST['pole2'])) $query[] = 'pole2='.$_POST['pole2'];

$res = implode(' and ', $query);
Website CMS: быстрая, удобная, недорогая! Вечная лицензия за 45$ (/ru/forum/524503) Яся - быстрый поиск фото для товаров. OpenCart/ocStore. Дополнение. (/ru/forum/665287) Грамотная верстка ваших макетов (/ru/forum/comment/8853216)
RO
На сайте с 13.07.2009
Offline
88
#2

спасибо AlikZP :)

[Удален]
#3

только хотел под***ть что про иф не слышали)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий