Руслан
Новичок
Поиск (фильтр) по нескольким значениям и проблем с AND запросе.
Робятки выручайте.
Не доеду как сделать поиск по нескольким значениям (составить запрос) которые приходят из формы.
Делаю следующим образом -
Там есть особенности, поэтому в кратце объясню
Принимаю значения они с буквой f впереди, проверяю есть ли они, если есть проверяю все ли они пустые - если все пустые то вываливается весь список поэтому $where - пустой.
Если не все пустые то where нужен для запроса. Если их вобще нет ( при первом заходе на страницу) то where нужен что бы вывести только те у которых статус "незавершенна".
Вобщем с were у меня всё получилось.. Думал по аналогии сделать с AND в запросе - т.е при проверке значений увеличивать дополнительную переменную на 1. и если переменая > чем 1, то вводить AND.
Но... как ввести ее в запросе нужное кол-во раз там где нужно, если составление запроса делается из переменных некоторые из которых пустые? Можно конечно проверить если больше чем одна переменная то присваивать допустим
$pstatus="AND status=".$fstatus; Но как узнать что она пойдет первой что бы не получилось where and AND status="новая" допустим?Можно конечно по порядку смотреть не пустое ли предыдущее значение, но мне кажется что так получится несколько громоздко..
Возможно я неверно подошел к решению задачи, посоветуйте чего нибудь..
Робятки выручайте.
Не доеду как сделать поиск по нескольким значениям (составить запрос) которые приходят из формы.
Делаю следующим образом -
PHP:
if (isset($nz) or isset($fday_day) or isset($fday_month) or isset($fday_year) or isset($fobject) or isset($fnik)
or isset($fnuch) or isset($fznak) or isset($fspec) or isset($fstatus) or isset($fakt)) {
if ($nz=="" and $fday_day=="" and $fday_month=="" and $fday_year=="" and $fobject=="" and $fnik==""
and $fnuch=="" and $fznak=="" and $fspec=="" and $fstatus=="" and $fakt=="") {
$where="";
} else {
$where="where";
}
} else {
$where="where";
}
if(isset($fstatus)) {
if($fstatus!=""){
$pstatus="status=".$fstatus;
}else{
$pstatus="";
}
} else {$pstatus='status!="завершенна"';}
if(isset($nz) and $nz!="") {$pnz="id=".$nz;}
if(isset($fobject) and $fobject!="") {$pfobject="id=".$nz;}
$zayavkaq = mysql_query("SELECT * FROM zayavka ".$where." ".$pstatus." ".$pnz."");
Принимаю значения они с буквой f впереди, проверяю есть ли они, если есть проверяю все ли они пустые - если все пустые то вываливается весь список поэтому $where - пустой.
Если не все пустые то where нужен для запроса. Если их вобще нет ( при первом заходе на страницу) то where нужен что бы вывести только те у которых статус "незавершенна".
Вобщем с were у меня всё получилось.. Думал по аналогии сделать с AND в запросе - т.е при проверке значений увеличивать дополнительную переменную на 1. и если переменая > чем 1, то вводить AND.
Но... как ввести ее в запросе нужное кол-во раз там где нужно, если составление запроса делается из переменных некоторые из которых пустые? Можно конечно проверить если больше чем одна переменная то присваивать допустим
$pstatus="AND status=".$fstatus; Но как узнать что она пойдет первой что бы не получилось where and AND status="новая" допустим?Можно конечно по порядку смотреть не пустое ли предыдущее значение, но мне кажется что так получится несколько громоздко..
Возможно я неверно подошел к решению задачи, посоветуйте чего нибудь..