Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Помогите с выборкой
 
 автор: mark1   (19.10.2009 в 13:38)   письмо автору
 
 

есть таблица 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"]);
 
}
 
 
 
}
?>
 

  Ответить  
 
 автор: heed   (19.10.2009 в 18:05)   письмо автору
 
   для: 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.

но есть-ли необходимость во всех последующих запросах сказать труднее
теоретически можно всё это сделать одним запросом
, но практически , неизвестно почему именно так запрашмваются данные
, сколько максимально данных может быть в результатах
, насколько могут изменяться нижеидущие запросы
, и вообще насколько просщеизменяемым должен быть код

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования