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

Форум PHP

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

 

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

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

тема: поиском по селектам
 
 автор: mark1   (17.10.2009 в 09:53)   письмо автору
 
 

как сделать так чтоб при поиске по селектам если заполнены не все парвметры поиск осуществлялся по ним,например если заполнить только категорию,из даты выводятся все с этой с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"]);

}



}
?>

  Ответить  
 
 автор: elenaki   (17.10.2009 в 18:24)   письмо автору
 
   для: 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 переменных на каждое условие. по крайней мере, так не
запутаешься.

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

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