Проблема поиска внутри категорий
Проблема поиска внутри категорий
Здравствуйте, уважаемые коллеги!
Подскажите, как решить следующую проблему:
Я скомбинировал CompanyDirectory и Products в один модуль, получив в итоге замечательную штуку для каталога объектов недвижимости.
Но возникла одна существеннаяч проблема: по всей базе модуля поиск происходит влет, а вот разделить поиск по разделам и категориям не удается.
Я плаваю в вопросах выборки информации из сопряженных таблиц mySQL, увы...
Подскажите, в каком направлении копать?
Если понадобится, скину листинги, только помогите, пожалуйста!
Подскажите, как решить следующую проблему:
Я скомбинировал CompanyDirectory и Products в один модуль, получив в итоге замечательную штуку для каталога объектов недвижимости.
Но возникла одна существеннаяч проблема: по всей базе модуля поиск происходит влет, а вот разделить поиск по разделам и категориям не удается.
Я плаваю в вопросах выборки информации из сопряженных таблиц mySQL, увы...
Подскажите, в каком направлении копать?
Если понадобится, скину листинги, только помогите, пожалуйста!
Re: Проблема поиска внутри категорий
Копать в направлении SQL-запросов. INNER JOIN + WHERE.
Re: Проблема поиска внутри категорий
Таблица связи товара с категориями - cms_module_products_product_categories.
К примеру, чтобы выбрать все товары с категорией 3 (идентификатор категории), нужен примерно такой запрос:
К примеру, чтобы выбрать все товары с категорией 3 (идентификатор категории), нужен примерно такой запрос:
Code: Select all
SELECT * FROM cms_module_products p
JOIN cms_module_products_product_categories pc
ON (pc.category_id = 3) AND (p.id = pc.product_id);
Re: Проблема поиска внутри категорий
Вот у меня есть аналог:
из таблицы cms_module_tenures извлекается следующая инфа:
Но эти данные извлекаются из основной таблицы, а у меня есть таблица
cms_module_tenures_tenure_categories
как мне извлечь из нее?
из таблицы cms_module_tenures извлекается следующая инфа:
Code: Select all
if( !empty($gas_expr) )
{
$where[] = 'P.gas REGEXP ?';
$qparms[] = $gas_expr;
}
cms_module_tenures_tenure_categories
как мне извлечь из нее?
Re: Проблема поиска внутри категорий
Можно показать листинг do_search? Что-то никак не получается, уже две недели кручу.
Re: Проблема поиска внутри категорий
Не знаю, как в вашем коде что устроено. Возможно запрос придется формировать вручную.masterok wrote: Вот у меня есть аналог:
из таблицы cms_module_tenures извлекается следующая инфа:
Но эти данные извлекаются из основной таблицы, а у меня есть таблицаCode: Select all
if( !empty($gas_expr) ) { $where[] = 'P.gas REGEXP ?'; $qparms[] = $gas_expr; }
cms_module_tenures_tenure_categories
как мне извлечь из нее?
И вместо REGEXP желательно использовать LIKE.
Можно. Если большой - лучше как прикрепленный файл.Можно показать листинг do_search? Что-то никак не получается, уже две недели кручу.
Re: Проблема поиска внутри категорий
Работающий файл do_search, в который никак не могу запихнуть сортировку по иерархии и категории. Мои таблицы:
cms_module_tenures
cms_module_tenures_categories
cms_module_tenures_category_fields
cms_module_tenures_hierarchy
cms_module_tenures_tenure_categories
cms_module_tenures_tenurtohier
NB! Очень благодарен Вам за внимание!!!
cms_module_tenures
cms_module_tenures_categories
cms_module_tenures_category_fields
cms_module_tenures_hierarchy
cms_module_tenures_tenure_categories
cms_module_tenures_tenurtohier
NB! Очень благодарен Вам за внимание!!!
- Attachments
-
[The extension txt has been deactivated and can no longer be displayed.]
Re: Проблема поиска внутри категорий
Коллеги, а может быть мне проще заставить поиск работать внутри раздела и категории по принципу:
Но беда в том, что изначально у функции поиска нет такой возможности, как его заставить так работать, по аналогии с action.default.php ?
Code: Select all
{cms_module module='Модуль' hierarchy='значение раздела' category='значение категории'}
Re: Проблема поиска внутри категорий
Трудно в коде разобраться, не зная, как всё там устроено. Но, подозреваю, что необходимо в условии
if( !empty($searchdata) )
добавить
$joins[] = 'JOIN '.cms_db_prefix().'module_tenures_tenure_categories TC ON P.id = TC.tenure_id';
и условие
$where[] = '(TC.category_id IN список_идентификаторов_категорий_для_поиска)';
if( !empty($searchdata) )
добавить
$joins[] = 'JOIN '.cms_db_prefix().'module_tenures_tenure_categories TC ON P.id = TC.tenure_id';
и условие
$where[] = '(TC.category_id IN список_идентификаторов_категорий_для_поиска)';
Re: Проблема поиска внутри категорий
Да, верно! Я не догадался использовать всю серчдату.
Спасибо огромное!
Спасибо огромное!