Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: поиск по селектам
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » поиск по селектам

Страниц (1): [1]
 

1. mark1 - 17 Октября, 2009 - 22:27:34 - перейти к сообщению
как сделать так чтоб при поиске по селектам если заполнены не все парвметры поиск осуществлялся по ним,например если заполнить только категорию,из даты выводятся все с этой сat_id

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP if($_POST['action']=="search")
  3. {
  4.  
  5. $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']."'";
  6. $res = mysql_query($query);
  7. if(!$res) exit("Ошибка извлечения данных ".mysql_error());  
  8.  
  9.   while ($myrow = mysql_fetch_array($res))  
  10. {
  11. //категории
  12. $categ=$myrow ["cat_id"];
  13. $res1=mysql_query ("SELECT name FROM cat where cat_id='$categ'",$dbh);
  14. $myrow1=mysql_fetch_array ($res1);
  15.  
  16.  
  17. //сделка  
  18. $sdel=$myrow ["sd_id"];
  19. $res2=mysql_query ("SELECT name FROM sdelka where sd_id='$sdel'",$dbh);
  20. $myrow2=mysql_fetch_array ($res2);
  21.  
  22.  
  23.  
  24.  
  25. // комнаты
  26. $komn=$myrow ["kom_id"];
  27. $res3=mysql_query ("SELECT kol FROM komnati where kom_id='$komn'",$dbh);
  28. $myrow3=mysql_fetch_array ($res3);
  29.  
  30.  
  31.  
  32. //улица  
  33. $cit=$myrow ["city_id"];
  34. $res4=mysql_query ("SELECT name FROM city where city_id='$cit'",$dbh);
  35. $myrow4=mysql_fetch_array ($res4);
  36.  
  37.  
  38.  
  39.  
  40. //планировка  
  41. $plan=$myrow ["plan_id"];
  42. $res5=mysql_query ("SELECT name FROM planirovka where plan_id='$plan'",$dbh);
  43. $myrow5=mysql_fetch_array ($res5);  
  44.  
  45. //материал  
  46. $mat=$myrow ["mat_id"];
  47. $res6=mysql_query ("SELECT name FROM material where mat_id='$mat'",$dbh);
  48. $myrow6=mysql_fetch_array ($res6);
  49.  
  50.  
  51.  
  52. //этаж  
  53. $et=$myrow ["et_id"];
  54. $res7=mysql_query ("SELECT name FROM etag where et_id='$et'",$dbh);
  55. $myrow7=mysql_fetch_array ($res7);
  56.  
  57.  
  58.  
  59.  
  60.  
  61. //площадь  
  62. $psh=$myrow ["psh_id"];
  63. $res8=mysql_query ("SELECT name FROM ploshad where psh_id='$psh'",$dbh);
  64. $myrow8=mysql_fetch_array ($res8);
  65.  
  66.  
  67.  
  68.  
  69.  
  70. //цена  
  71. $cen=$myrow ["cen_id"];
  72. $res9=mysql_query ("SELECT name FROM cena where cen_id='$cen'",$dbh);
  73. $myrow9=mysql_fetch_array ($res9);
  74.  
  75.  
  76.  
  77.  
  78.  
  79. 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"]);
  80.  
  81. }
  82.  
  83.  
  84.  
  85. }?>
  86.  
2. Мелкий - 17 Октября, 2009 - 22:37:14 - перейти к сообщению
Группой условий - если передано дефолтное значение или пусто (''), то в запрос не попадает. т.е. строку $query собираете по ходу.
Или я не понял, что делает этот код? Это же просто фильтр по параметрам?

PS: а зачем используется printf? Тут форматирование не нужно, echo или просто print более, чем достаточно.
3. mark1 - 17 Октября, 2009 - 22:47:54 - перейти к сообщению
а пример можно какой нибудь Не понял ,a то у меня ищет если все селекты заполнены
4. koras - 17 Октября, 2009 - 23:45:04 - перейти к сообщению
Если честно сказать, взглянув на код мельком и не разбирая его я испугался.
Вам надо как то научиться сокращать код. Щас приведу пример для наглядности.
PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. $searchvalyta = "AND `valyta` = {$valyta[0]}";
  4.                 if ($valyta[0] == "0" || $valyta[0] == ""){ $searchvalyta = "";
  5.                 }
  6. $searchsrokkredita  = "AND `year` >= {$srokkredita[0]}";
  7.                 if ($srokkredita[0] == "0" || $srokkredita[0] == ""){ $searchsrokkredita = "";
  8.                 }
  9. $searchndflk = "AND `ndfl` = {$ndfl[0]}";
  10.                 if ($ndfl[0] == "0" || $ndfl[0] == ""){ $searchndflk = "";
  11.                         }
  12.                 if ($ndfl[0] == "2" ){ $searchndflk = "AND `ndfl` = 2";
  13.                         }
  14.                 if ($ndfl[0] == "1" ){ $searchndflk = "AND `ndfl` = 1";}
  15.  
  16. $select = "SELECT *
  17. FROM  infobank  
  18. WHERE `idbank` IN(SELECT  ids
  19. FROM  banki  
  20. WHERE `ids`{$searchbank})
  21. {$searchstavka}
  22. {$searchspravkabank}
  23. {$searchvznos}
  24. {$searchndflk}
  25. {$searchsrokkredita}
  26. {$searchvalyta}
  27. ";


В примере кстати так же решение вашей проблемы

 

Powered by ExBB FM 1.0 RC1