Проблема поиска внутри категорий

Обсуждение CMS Made Simple в России.

Moderators: iturbay, wdwp

Post Reply
masterok
Forum Members
Forum Members
Posts: 16
Joined: Wed Oct 29, 2008 9:16 pm

Проблема поиска внутри категорий

Post by masterok »

Здравствуйте, уважаемые коллеги!
Подскажите, как решить следующую проблему:
Я скомбинировал CompanyDirectory и Products в один модуль, получив в итоге замечательную штуку для каталога объектов недвижимости.
Но возникла одна существеннаяч проблема: по всей базе модуля поиск происходит влет, а вот разделить поиск по разделам и категориям не удается.
Я плаваю в вопросах выборки информации из сопряженных таблиц mySQL, увы...
Подскажите, в каком направлении копать?

Если понадобится, скину листинги, только помогите, пожалуйста!
Fenik17
Power Poster
Power Poster
Posts: 450
Joined: Tue Jun 01, 2010 5:42 am

Re: Проблема поиска внутри категорий

Post by Fenik17 »

Копать в направлении SQL-запросов. INNER JOIN + WHERE.
Fenik17
Power Poster
Power Poster
Posts: 450
Joined: Tue Jun 01, 2010 5:42 am

Re: Проблема поиска внутри категорий

Post by Fenik17 »

Таблица связи товара с категориями - cms_module_products_product_categories.
К примеру, чтобы выбрать все товары с категорией 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);
masterok
Forum Members
Forum Members
Posts: 16
Joined: Wed Oct 29, 2008 9:16 pm

Re: Проблема поиска внутри категорий

Post by masterok »

Вот у меня есть аналог:
из таблицы cms_module_tenures извлекается следующая инфа:

Code: Select all

if( !empty($gas_expr) )
	{
	$where[] = 'P.gas REGEXP ?';
	$qparms[] = $gas_expr;
	}
Но эти данные извлекаются из основной таблицы, а у меня есть таблица
cms_module_tenures_tenure_categories
как мне извлечь из нее?
masterok
Forum Members
Forum Members
Posts: 16
Joined: Wed Oct 29, 2008 9:16 pm

Re: Проблема поиска внутри категорий

Post by masterok »

Можно показать листинг do_search? Что-то никак не получается, уже две недели кручу.
Fenik17
Power Poster
Power Poster
Posts: 450
Joined: Tue Jun 01, 2010 5:42 am

Re: Проблема поиска внутри категорий

Post by Fenik17 »

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? Что-то никак не получается, уже две недели кручу.
Можно. Если большой - лучше как прикрепленный файл.
masterok
Forum Members
Forum Members
Posts: 16
Joined: Wed Oct 29, 2008 9:16 pm

Re: Проблема поиска внутри категорий

Post by masterok »

Работающий файл 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! Очень благодарен Вам за внимание!!!
Attachments

[The extension txt has been deactivated and can no longer be displayed.]

masterok
Forum Members
Forum Members
Posts: 16
Joined: Wed Oct 29, 2008 9:16 pm

Re: Проблема поиска внутри категорий

Post by masterok »

Коллеги, а может быть мне проще заставить поиск работать внутри раздела и категории по принципу:

Code: Select all

{cms_module module='Модуль' hierarchy='значение раздела' category='значение категории'}
Но беда в том, что изначально у функции поиска нет такой возможности, как его заставить так работать, по аналогии с action.default.php ?
Fenik17
Power Poster
Power Poster
Posts: 450
Joined: Tue Jun 01, 2010 5:42 am

Re: Проблема поиска внутри категорий

Post by Fenik17 »

Трудно в коде разобраться, не зная, как всё там устроено. Но, подозреваю, что необходимо в условии

if( !empty($searchdata) )

добавить

    $joins[] = 'JOIN '.cms_db_prefix().'module_tenures_tenure_categories TC ON P.id = TC.tenure_id';

и условие

    $where[] = '(TC.category_id IN список_идентификаторов_категорий_для_поиска)';
masterok
Forum Members
Forum Members
Posts: 16
Joined: Wed Oct 29, 2008 9:16 pm

Re: Проблема поиска внутри категорий

Post by masterok »

Да, верно! Я не догадался использовать всю серчдату.
Спасибо огромное!
Post Reply

Return to “Russian - русский”