|
|
|
| как сделать так чтоб при поиске по селектам если заполнены не все парвметры поиск осуществлялся по ним,например если заполнить только категорию,из даты выводятся все с этой сat_id
<?php if($_POST['action']=="search")
{
$query = "SELECT * FROM `data` WHERE `cat_id`='".(int)$_POST['cat']."' and `city_id`='".(int)$_POST['city']."' and `kom_id`='".(int)$_POST['komnati']."' and `sd_id`='".(int)$_POST['sdelka']."' and `plan_id`='".(int)$_POST['planirovka']."' and `mat_id`='".(int)$_POST['material']."'";
$res = mysql_query($query);
if(!$res) exit("Ошибка извлечения данных ".mysql_error());
while ($myrow = mysql_fetch_array($res))
{
//категории
$categ=$myrow ["cat_id"];
$res1=mysql_query ("SELECT name FROM cat where cat_id='$categ'",$dbh);
$myrow1=mysql_fetch_array ($res1);
//сделка
$sdel=$myrow ["sd_id"];
$res2=mysql_query ("SELECT name FROM sdelka where sd_id='$sdel'",$dbh);
$myrow2=mysql_fetch_array ($res2);
// комнаты
$komn=$myrow ["kom_id"];
$res3=mysql_query ("SELECT kol FROM komnati where kom_id='$komn'",$dbh);
$myrow3=mysql_fetch_array ($res3);
//улица
$cit=$myrow ["city_id"];
$res4=mysql_query ("SELECT name FROM city where city_id='$cit'",$dbh);
$myrow4=mysql_fetch_array ($res4);
//планировка
$plan=$myrow ["plan_id"];
$res5=mysql_query ("SELECT name FROM planirovka where plan_id='$plan'",$dbh);
$myrow5=mysql_fetch_array ($res5);
//материал
$mat=$myrow ["mat_id"];
$res6=mysql_query ("SELECT name FROM material where mat_id='$mat'",$dbh);
$myrow6=mysql_fetch_array ($res6);
//этаж
$et=$myrow ["et_id"];
$res7=mysql_query ("SELECT name FROM etag where et_id='$et'",$dbh);
$myrow7=mysql_fetch_array ($res7);
//площадь
$psh=$myrow ["psh_id"];
$res8=mysql_query ("SELECT name FROM ploshad where psh_id='$psh'",$dbh);
$myrow8=mysql_fetch_array ($res8);
//цена
$cen=$myrow ["cen_id"];
$res9=mysql_query ("SELECT name FROM cena where cen_id='$cen'",$dbh);
$myrow9=mysql_fetch_array ($res9);
printf ("<table ><tr><td class='t1'>%s</td><td class='t1'>%s</td><td class='t1'>%s</td><td class='t1'>%s</td><td class='t1'>%s</td><td class='t1'>%s</td><td class='t1'>%s</td><td class='t1'>%s</td><td class='t1'>%s</td></tr></table>",$myrow4["name"],$myrow1["name"],$myrow2["name"],$myrow3["kol"],$myrow5["name"],$myrow6["name"],$myrow7["name"],$myrow8["name"],$myrow9["name"]);
}
}?>
|
| |
|
|
|
|
|
|
|
для: mark1
(17.10.2009 в 09:53)
| | сделайте переменную $cond, в нее набирайте только те условия, которые реально выбраны
и должны участвовать в запросе. потом в запрос подставляете "WHERE ".$cond и все.
вот пример:
...
//// выбрана цель
if (isset($_GET["aim_id"]) && intval($_GET["aim_id"]) > 0 ) {
$cond0 = " and aim_id='".intval($_GET["aim_id"])."'";
if ( intval($_GET["aim_id"]) == 1) $stroka_ysl .= $title_aim." - ".$title_sale.", ";
if ( intval($_GET["aim_id"]) == 2) $stroka_ysl .= $title_aim." - ".$title_rent.", ";
}
else $cond0 = "";
//// выбран тип
if (isset($_GET["type_id"]) && intval($_GET["type_id"]) > 0 ) {
$cond1 = " and type_id='".intval($_GET["type_id"])."'";
...
|
ой. это у меня раньше была одна переменная $cond. но приходилось каждый раз проверять,
есть уже в ней что-то или нет и по-разному писать условие (с WHERE или с AND). поэтому
в последнем случае я сделала 13 переменных на каждое условие. по крайней мере, так не
запутаешься. | |
|
|
|