Дополнительные условия отбора информационных элементов

#
Дополнительные условия отбора информационных элементов
Здравствуйте!

Столкнулся с такой проблемой: невозможно сделать выборку информационных элементов по 2 и более дополнительным свойствам.

Например:

<?
...
$IS = new InformationSystem();

$property=array();
$element = array();

$element['type'] = 1;
$element['prefix'] = " AND  ";
$element['property_id'] = "58";
$element['if'] = " = ";
$element['value'] = 1;
$element['sufix']= "";
$property['select'][] = $element;

$element['type'] = 1;
$element['prefix'] = " AND ";
$element['property_id'] = 70;
$element['if'] = " = ";
$element['value'] = 1;
$element['sufix']= "  ";
$property['select'][] = $element;

$IS->ShowInformationSystem(6, false, 'xsl_шаблон', 10, 0, array(), $property);
...
?>

Не выводит никаких результатов, хотя значения доп. свойств соответствуют указанным. (Пробовал различные сочетания префиксов и суффиксов).

При этом пример из документации, когда фильтрация производится по одному основному и по одному дополнительному свойству, работает!

Если нет стандартной технической возможности (через массив $element)
фильтровать по нескольким доп.свойствам, то хотелось бы иметь представление хотя бы о структуре SQL-запроса метода InformationSystem::ShowInformationSystem, т.к. функция mysql_info() возвращает пустую строку

Спасибо!
Hello, World!
#
Re: Дополнительные условия отбора информационных элементов
Использование конструктора запросов при выборке из нескольких дополнительных свойств имеет одну особенность. Попробуйте так:
<?
...
$IS = new InformationSystem();

$property=array();
$element = array();

$element['type'] = 1;
$element['prefix'] = " AND  (";
$element['property_id'] = "58";
$element['if'] = " = ";
$element['value'] = 1;
$element['sufix']= "";
$property['select'][] = $element;

$element['type'] = 1;
$element['prefix'] = " OR ";
$element['property_id'] = 70;
$element['if'] = " = ";
$element['value'] = 1;

$count_condition = 2;

$having_count= ' HAVING COUNT(information_propertys_items_table.information_propertys_items_id)= '.$count_condition;
$element['sufix']=' ) GROUP BY information_items_table.information_items_id '.$having_count;

$property['select'][] = $element;

$IS->ShowInformationSystem(6, false, 'xsl_шаблон', 10, 0, array(), $property);
...
?>
#
Re: Дополнительные условия отбора информационных элементов
не работает
Hello, World!
#
Re: Дополнительные условия отбора информационных элементов
Происходит ошибка? Что выдает?
#
Re: Дополнительные условия отбора информационных элементов
ничего не выдает

сейчас пробую использовать Интернет-магазин для решения моей задачи

проблема в том, что мне необходимо искать(фильтровать) элементы по большому (около 30) количеству дополнительных полей разных типов : интервалы(как цена), списки и т.п.  
Hello, World!
#
Re: Дополнительные условия отбора информационных элементов
Да, для построения фильтра, лучше всего реализовать список элементов на базе интернет-магазина. Фильтр там уже стандартно реализован.
#
Re: Дополнительные условия отбора информационных элементов
Как фильтровать по нескольким полям правильно?
Чтобы заработало?
Так ответа и небыло
Интеграция дизайна, доработка кода системы, техническое обслуживание сайтов на HostCMS
Модератор
#
Re: Дополнительные условия отбора информационных элементов
3dkvadrat,
Чем не устраивает ответ от Натальи 25.12.2007 14:04:16?

Обратите внимание на процитированный фрагмент, значение 2 изменяется на количество фильтруемых элементов (если их больше одного).

$count_condition = 2;
$having_count= ' HAVING COUNT(information_propertys_items_table.information_propertys_items_id)= '.$count_condition;
$element['sufix']=' ) GROUP BY information_items_table.information_items_id '.$having_count;
#
Re: Дополнительные условия отбора информационных элементов
Спасибо! Пробую...
Интеграция дизайна, доработка кода системы, техническое обслуживание сайтов на HostCMS
#
Re: Re: Дополнительные условия отбора информационных элементов
HostCMS писал(а):
$count_condition = 2;
$having_count= ' HAVING COUNT (information_propertys_items_table.information_propertys_items_id) = '.$count_condition;
$element['sufix']=' GROUP BY information_items_table.information_items_id '.$having_count;


Пробовал реализовать такую конструкцию. Возникает ошибка:
FUNCTION base_name.COUNT does not exist


Как исправить ? Очень нужно фильтровать записи по 2-м дополнительным элементам.
http://site-plus.ru - разработка интернет сайтов
Авторизация