|
|
|
| есть таблица data в ней id других таблиц,выборка идет по селектам,надо чтоб при заполнении какого нибудь из селектов или нескольких,выборка шла по ним,а если все заполнены то по всем условиям
<?PHP
$cat_id = isset($_POST['cat'])? $_POST['cat'] : null;
$city_id = isset($_POST['city'])? $_POST['city'] : null;
$kom_id = isset($_POST['komnati'])? $_POST['komnati'] : null;
$sd_id = isset($_POST['sdelka'])? $_POST['sdelka'] : null;
$plan_id = isset($_POST['planirovka'])? $_POST['planirovka'] : null;
$mat_id = isset($_POST['material'])? $_POST['material'] : null;
$where_cat_id = " cat_id = '".$cat_id."' ";
$where_city_id = " city_id = '".$city_id."' ";
$where_kom_id = " kom_id = '".$kom_id."' ";
$where_sd_id = " sd_id = '".$sd_id."' ";
$where_plan_id = " plan_id = '".$plan_id."' ";
$where_mat_id = " mat_id = '".$mat_id."' ";
if ($сat_id !== "") $where_cat_id = " cat_id = '$cat_id' AND ";
else $where_cat_id == "";
if ($city_id !== "") $where_city_id = " city_id = '$city_id' AND ";
else $where_city_id == "";
if ($kom_id !== "") $where_kom_id = " kom_id = '$kom_id' AND ";
else $where_kom_id == "";
if ($sd_id !== "") $where_sd_id = " sd_id = '$sd_id' AND ";
else $where_sd_id == "";
if ($plan_id !== "") $where_plan_id = " plan_id = '$plan_id' AND ";
else $where_plan_id == "";
if ($mat_id !== "") $where_mat_id = " mat_id = '$mat_id' AND ";
else $where_mat_id == "";
if($_POST['action']=="search")
{
$sql = "SELECT * FROM data ";
if (($where_cat_id !== "")||($where_city_id !== "")||($where_kom_id !== "")||($where_sd_id !== "")||($where_plan_id !== "")||($where_mat_id !== "")) $sql .= " WHERE ";
$sql .= " " . $where_cat_id . " ";
$sql .= " " . $where_city_id . " ";
$sql .= " " . $where_kom_id . " ";
$sql .= " " . $where_sd_id . " ";
$sql .= " " . $where_plan_id . " ";
$sql .= " " . $where_mat_id . " ";
$sql = substr_replace($sql, ' ', -5);
echo $sql;
$query = mysql_query ( $sql );
if(!$query) exit("Ошибка извлечения данных ".mysql_error());
$myrow = mysql_fetch_array ( $query );
echo mysql_error ();
echo 'Что же у нас на выходе - ';
var_dump ( $myrow );
while ($myrow = mysql_fetch_array($query))
{
//категории
$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='t2'>%s</td><td class='t2'>%s</td><td class='t2'>%s</td><td class='t2'>%s</td><td class='t2'>%s</td><td class='t2'>%s</td><td class='t2'>%s</td><td class='t2'>%s</td><td class='t2'>%s</td></tr></table>",$myrow4["name"],$myrow1["name"],$myrow2["name"],$myrow3["kol"],$myrow5["name"],$myrow6["name"],$myrow7["name"],$myrow8["name"],$myrow9["name"]);
}
}?>
|
| |
|
|
|
|
|
|
|
для: mark1
(19.10.2009 в 13:38)
| | можно просще сформировать запрос
<?php
if(isset($_POST['action']) && $_POST['action'] =="search")
{
$nkeys = array( # ключи и имена
'cat'=>'cat_id', 'city'=>'city_id', 'komnati'=>'kom_id',
'sdelka'=>'sd_id', 'planirovka'=>'plan_id',
'material'=>'mat_id'
);
$qsubst = '';
foreach($nkeys AS $k => $v){
if (isset($_POST[$k]) && ($tmp = intval($_POST[$k])) > 0)
$qsubst .= ((empty($qsubst))? ' ': ' AND ') . $v .'='. $tmp;
}
if (empty($qsubst)) exit('Нет условий');
echo $sql = "SELECT * FROM data WHERE" . $qsubst;
# полный запрос
| если не ошибаюсь в таком-же вопросе
в прошлый раз везде данные формы приводились к int.
но есть-ли необходимость во всех последующих запросах сказать труднее
теоретически можно всё это сделать одним запросом
, но практически , неизвестно почему именно так запрашмваются данные
, сколько максимально данных может быть в результатах
, насколько могут изменяться нижеидущие запросы
, и вообще насколько просщеизменяемым должен быть код | |
|
|
|