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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Определённый SQL запрос в зависимости от выбранных полей

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
dieGo_nk
Отправлено: 09 Февраля, 2012 - 17:35:14
Post Id



Новичок


Покинул форум
Сообщений всего: 25
Дата рег-ции: Июнь 2011  


Помог: 1 раз(а)




Всем доброго вечера!
Нужна ваша помощь:

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

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.  



есть варианты минимизировать это?
 
 Top
Мелкий Супермодератор
Отправлено: 09 Февраля, 2012 - 17:51:31
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




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);


-----
PostgreSQL DBA
 
 Top
dieGo_nk
Отправлено: 09 Февраля, 2012 - 18:11:20
Post Id



Новичок


Покинул форум
Сообщений всего: 25
Дата рег-ции: Июнь 2011  


Помог: 1 раз(а)




Спасибо!)
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с СУБД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB