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 :: Версия для печати :: Определённый SQL запрос в зависимости от выбранных полей
Форумы портала PHP.SU » » Работа с СУБД » Определённый SQL запрос в зависимости от выбранных полей

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

1. dieGo_nk - 09 Февраля, 2012 - 17:35:14 - перейти к сообщению
Всем доброго вечера!
Нужна ваша помощь:

Есть форма поиска

1 поле ввода текста для поиска
2 поле select выбор категории
3 поле select выбора города

нужно в зависимости от выбора полей сделать запрос
если не выбирать поле категории будет искать по всем категориям
если не выбирать поле города то будет искать по всем городам

с помощью if else получается громозко
пример

PHP:
скопировать код в буфер обмена
  1.  
  2. if (isset($_GET['category']))
  3. {
  4.     if (isset($_GET['city']))
  5.     {
  6.          if (isset($_GET['textSearch']))
  7.          {
  8.                $sql = "SELECT * FROM `ads`
  9.                                   WHERE `cat_id`=$_GET['category'] and
  10.                                   WHERE `city_id` = $_GET['city'] and
  11.                                   WHERE `title` like %$_GET['textSearch']%";
  12.          }
  13.          else
  14.          {
  15.                 $sql = "SELECT * FROM `ads`
  16.                                   WHERE `cat_id`=$_GET['category'] and
  17.                                   WHERE `city_id` = $_GET['city']";
  18.           }
  19.     }
  20.     else
  21.     {
  22.         if (isset($_GET['textSearch']))
  23.          {
  24.                $sql = "SELECT * FROM `ads`
  25.                                   WHERE `cat_id`=$_GET['category'] and
  26.                                   WHERE `title` like %$_GET['textSearch']%";
  27.          }
  28.          else
  29.          {
  30.                 $sql = "SELECT * FROM `ads`
  31.                                   WHERE `cat_id`=$_GET['category']";
  32.           }
  33.     }
  34. }
  35. else
  36. {
  37.      // В случае если не выбрана категория сново много запросов
  38. }
  39.  
  40.  



есть варианты минимизировать это?
2. Мелкий - 09 Февраля, 2012 - 17:51:31 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $rgFilterRules = array();
  2. if (isset($_GET['category'])) $rgFilterRules[] = "`cat_id`=".intval($_GET['category']);
  3. if (isset($_GET['city'])) $rgFilterRules[] = "`cat_id`=".intval($_GET['city']);
  4. /*...*/
  5. $sFilterSQL = "SELECT * FROM `ads`";
  6. if (!empty($rgFilterRules)) $sFilterSQL .= ' where '.join(' and ', $rgFilterRules);
  7. //var_dump($sFilterSQL);
3. dieGo_nk - 09 Февраля, 2012 - 18:11:20 - перейти к сообщению
Спасибо!)

 

Powered by ExBB FM 1.0 RC1