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 :: Помогите написать запрос

 PHP.SU

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


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

> Без описания
frost18
Отправлено: 03 Июля, 2011 - 17:51:08
Post Id


Новичок


Покинул форум
Сообщений всего: 60
Дата рег-ции: Май 2011  
Откуда: Москва, Росиия


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




Здравствуйте.
У меня есть база с товарами, каждый товар храниться в каком то каталоге или подкаталоге, так же у него есть имя, номер и т.п.
Мне нужно сделать поиск. Собственно он у меня есть и он работает. Поиск состоит из трех полей: Наименование (name="q[name]"), каталог (name="group_id") и подкаталог (name="subgroup_id").
Проблема вот в чем: Мой поиск не учитывает либо каталог либо подкаталог. Если я ввиду имя и каталог, то он ищет продукт в этом каталоге, т.е все ок, а если еще введу подкаталог, то он ищет только в подкаталоге и забивает на каталог, т.е он его не учитывает (
Я у вас прошу помощи, подскажите как написать такой запрос.

Вот код по поиску наименование:
PHP:
скопировать код в буфер обмена
  1. private function search_by_name(){
  2.         $_GET['q']['name'] = trim($_GET['q']['name']);
  3.         if(strtolower($_GET['q']['name']) == $this->aConfigSearch['name']['query'] || empty($_GET['q']['name'])){
  4.             return;
  5.         }
  6.         $search_name = str_replace(' ', '%', $_GET['q']['name']);
  7.         $oDIE = $this->oDBIE->GetList(array('name' => '%'.$search_name.'%', 'for_search' => 1, 'active' => 1), array('name' => ''), false, get_page() * $this->aDivider[get_divider()], $this->aDivider[get_divider()]);
  8.         $aDIE = array();
  9.         while($a = $oDIE->GetData()){
  10.             $aDIE[] = $this->processing($a['id']);  
  11.         }
  12.         return array(
  13.             'total'     => $this->oDBIE->total,
  14.             'data'      => $aDIE,
  15.             'search_by' => preg_replace('{^.+search_by_(.+)$}si', "$1", __METHOD__)
  16.         );
  17.     }

По поиску по каталогу:
PHP:
скопировать код в буфер обмена
  1. private function search_in_groups(){
  2.         $_GET['q']['name'] = trim($_GET['q']['name']);
  3.         if(strtolower($_GET['q']['name']) == $this->aConfigSearch['name']['query'] || empty($_GET['q']['name'])){
  4.             return false;
  5.         }
  6.         $search_name = str_replace(' ', '%', $_GET['q']['name']);
  7.         $_GET['group_id'] = intval($_GET['group_id']);
  8.         $aID = array($_GET['group_id']);
  9.         $this->oDBI->RecursiveGetChildIds($_GET['group_id'], $aID);
  10.         $oDIE = $this->oDBIE->getList(array('active' => 1, 'for_search' => 1, 'iblock_id' => $aID, 'name' => '%'.$search_name.'%'), array('name' => ''), false, get_page() * $this->aDivider[get_divider()], $this->aDivider[get_divider()]);
  11.         $aDIE = array();
  12.         while($a = $oDIE->GetData()){
  13.             $aDIE[] = $this->processing($a['id']);
  14.         }
  15.         return array(
  16.             'total'     => $this->oDBIE->total,
  17.             'data'      => $aDIE,
  18.             'search_by' => 'name'
  19.         );
  20.     }

И по поиску по подкаталогу:
PHP:
скопировать код в буфер обмена
  1. private function search_in_subgroups(){
  2.         $_GET['q']['name'] = trim($_GET['q']['name']);
  3.         if(strtolower($_GET['q']['name']) == $this->aConfigSearch['name']['query'] || empty($_GET['q']['name'])){
  4.             return false;
  5.         }
  6.         $search_name = str_replace(' ', '%', $_GET['q']['name']);
  7.         $_GET['subgroup_id'] = intval($_GET['subgroup_id']);
  8.         $aID = array($_GET['subgroup_id']);
  9.         $this->oDBI->RecursiveGetChildIds($_GET['subgroup_id'], $aID);
  10.         $oDIE = $this->oDBIE->getList(array('active' => 1, 'for_search' => 1, 'iblock_id' => $aID, 'name' => '%'.$search_name.'%'), array('name' => ''), false, get_page() * $this->aDivider[get_divider()], $this->aDivider[get_divider()]);
  11.         $aDIE = array();
  12.         while($a = $oDIE->GetData()){
  13.             $aDIE[] = $this->processing($a['id']);
  14.         }
  15.         return array(
  16.             'total'     => $this->oDBIE->total,
  17.             'data'      => $aDIE,
  18.             'search_by' => 'name'
  19.         );
  20.     }
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB