Наталья! Добрый день
Помогите, пожалуйста со следующим багом:
В форме поиска я передаю один стандартный параметр фильтра:
1) Производителя(producer_id)
и 2 своих:
2) Мощность ОТ (pwr_from)
3) Мощность ДО (pwr_to).
Данные принимает динамическая страница "Интернет-магазин".
С производителем всё в порядке, по нему данные прекрасно фильтруются.
Я взял работающий код формирования фильтра по производителю:
/* Ограничиваем по производителю */
if (to_int($_GET['producer_id']) > 0)
{
$element['type'] = 0; // 0 - основное св-во, 1 - дополнительное
$element['name'] = 'shop_producers_list_id';
$element['prefix'] = 'AND'; // префикс
$element['if'] = '='; // Условие
$element['value'] = to_int($_GET['producer_id']);
$element['sufix'] = '';
$param['select'][] = $element;
$external_propertys['producer_id'] = ''.to_int($_GET['producer_id']);
/* Применять фильтр */
$external_propertys['apply_filter'] = true;
}
и на его основе создал код для обработки своих параметров(они в виде доп свойств)
/* Ограничиваем по мощности/производительности ОТ */
if (to_int($_GET['pwr_from']) > 0)
{
$element = array();
$element['type'] = 1; // 0 - основное св-во, 1 - дополнительное
//$element['name'] = '';
$element['property_id'] = $param['current_group_id'] == 597 ? 147 : 137;
$element['prefix'] = ' AND '; // префикс
$element['if'] = '>='; // Условие
$element['value'] = ''.to_int($_GET['pwr_from']);
$element['sufix'] = '';
$param['select'][] = $element;
$external_propertys['pwr_from'] = ''.to_int($_GET['pwr_from']);
/* Применять фильтр */
$external_propertys['apply_filter'] = true;
}
/* Ограничиваем по мощности/производительности ДО */
if (to_int($_GET['pwr_to']) > 0)
{
$element = array();
$element['type'] = 1; // 0 - основное св-во, 1 - дополнительное
//$element['name'] = '';
$element['property_id'] = $param['current_group_id'] == 597 ? 147 : 137;
$element['prefix'] = ' AND '; // префикс
$element['if'] = '<='; // Условие
$element['value'] = ''.to_int($_GET['pwr_to']);
$element['sufix'] = '';
$param['select'][] = $element;
$external_propertys['pwr_to'] = to_int($_GET['pwr_to']);
/* Применять фильтр */
$external_propertys['apply_filter'] = true;
}
Вроде бы всё должно быть ОК.
Тем не менее фильтр работает аццки не логично и иногда срабатывает, чаще нет.
В чём может быть проблема?
Я правильно обрабатываю доп свойства?
Может быть проблема в формировании sql-запроса?
Как можно посмотреть, какой именно запрос ушёл в базу?