Новичок
Покинул форум
Сообщений всего: 60
Дата рег-ции: Май 2011
Откуда: Москва, Росиия
Помог: 0 раз(а)
|
Здравствуйте.
У меня есть база с товарами, каждый товар храниться в каком то каталоге или подкаталоге, так же у него есть имя, номер и т.п.
Мне нужно сделать поиск. Собственно он у меня есть и он работает. Поиск состоит из трех полей: Наименование (name="q[name]"), каталог (name="group_id") и подкаталог (name="subgroup_id").
Проблема вот в чем: Мой поиск не учитывает либо каталог либо подкаталог. Если я ввиду имя и каталог, то он ищет продукт в этом каталоге, т.е все ок, а если еще введу подкаталог, то он ищет только в подкаталоге и забивает на каталог, т.е он его не учитывает (
Я у вас прошу помощи, подскажите как написать такой запрос.
Вот код по поиску наименование:
PHP:
скопировать код в буфер обмена
private function search_by_name(){ $_GET['q']['name'] = trim($_GET['q']['name']); if(strtolower($_GET['q']['name']) == $this->aConfigSearch['name']['query'] || empty($_GET['q']['name'])){ return; } $search_name = str_replace(' ', '%', $_GET['q']['name']); $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 ()]); while($a = $oDIE->GetData()){ $aDIE[] = $this->processing($a['id']); } 'total' => $this->oDBIE->total, 'data' => $aDIE, 'search_by' => preg_replace('{^.+search_by_(.+)$}si', "$1", __METHOD__) ); }
По поиску по каталогу:
PHP:
скопировать код в буфер обмена
private function search_in_groups(){ $_GET['q']['name'] = trim($_GET['q']['name']); if(strtolower($_GET['q']['name']) == $this->aConfigSearch['name']['query'] || empty($_GET['q']['name'])){ return false; } $search_name = str_replace(' ', '%', $_GET['q']['name']); $_GET['group_id'] = intval($_GET['group_id']); $aID = array($_GET['group_id']); $this->oDBI->RecursiveGetChildIds($_GET['group_id'], $aID); $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 ()]); while($a = $oDIE->GetData()){ $aDIE[] = $this->processing($a['id']); } 'total' => $this->oDBIE->total, 'data' => $aDIE, 'search_by' => 'name' ); }
И по поиску по подкаталогу:
PHP:
скопировать код в буфер обмена
private function search_in_subgroups(){ $_GET['q']['name'] = trim($_GET['q']['name']); if(strtolower($_GET['q']['name']) == $this->aConfigSearch['name']['query'] || empty($_GET['q']['name'])){ return false; } $search_name = str_replace(' ', '%', $_GET['q']['name']); $_GET['subgroup_id'] = intval($_GET['subgroup_id']); $aID = array($_GET['subgroup_id']); $this->oDBI->RecursiveGetChildIds($_GET['subgroup_id'], $aID); $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 ()]); while($a = $oDIE->GetData()){ $aDIE[] = $this->processing($a['id']); } 'total' => $this->oDBIE->total, 'data' => $aDIE, 'search_by' => 'name' ); }
|