Фильтр по дате от до (через доп свойства)

#
Фильтр по дате от до (через доп свойства)
Здравствуйте,

Сделал ИС "Новости и акции", в которую в доп свойства добавил два поля - "Дата начала акции"(27) и "Дата окончания акции"(28).

Добавил календарик, который передает даты гетом следующим образом - ?data=2012-09-03

Через календарик нужно сделать фильтрацию элементов таким образом, при выборе даты выдавались элементы за выбранную дату, а также элементы у которых дата начала акции и окончания соответствовала выбранной...

С выводом элементов за текущую дату я разобрался, а вот элементы, попадающие в промежуток "от" "до", не выводятся, хотя сделал вроде всё по примерам.

Ниже код для ТДС:

if (isset($_GET['data']))
{
$GLOBALS['INFSYS_result']['group'] = false;
$property=array();
$property['xml_show_group_type'] = 'all';
$property['xml_show_group_property'] = true;

$data = to_str(mysql_escape_string(trim($_GET['data'])));

$count_condition = 2;
$having_count= ' HAVING COUNT(information_propertys_items_table.information_propertys_items_id)= '.$count_condition;

$element['type'] = 0;
$element['name'] = 'information_items_date';
$element['prefix'] = ' and ';
$element['if'] = ' REGEXP ';
$element['value'] = $data;
$element['sufix'] = '';
$property['select'][] = $element;

$element['type'] = 1;
$element['property_id'] = 27;
$element['prefix'] = ' or (';
$element['if'] = '>=';
$element['value'] =  $data;
$element['sufix'] = '';
$property['select'][] = $element;

$element['type'] = 1;
$element['property_id'] = 28;
$element['prefix'] = ' and ';
$element['if'] = '<=';
$element['value'] =  $data;
$element['sufix']=' ) GROUP BY information_propertys_items_table.information_items_id '.$having_count;
$property['select'][] = $element;

$external_propertys['filter'] = '1';

}


Подскажите, в чем может быть проблема?

Также в одном из примеров нашел другое решение,

if (isset($_GET['data']))
{
$GLOBALS['INFSYS_result']['group'] = false;
$property=array();
$property['xml_show_group_type'] = 'all';
$property['xml_show_group_property'] = true;

$data = to_str(mysql_escape_string(trim($_GET['data'])));

$element['type'] = 0;
$element['name'] = 'information_items_date';
$element['prefix'] = ' and ';
$element['if'] = ' REGEXP ';
$element['value'] = $data;
$element['sufix'] = '';
$property['select'][] = $element;

$element['type'] = 0;
$element['name'] = 'information_items_table.information_systems_id';
$element['prefix'] = ' or (';
$element['if'] = '=';
$element['value'] = '15';
$element['sufix'] = "AND (information_propertys_items_table.information_propertys_id=27
AND CONVERT(information_propertys_items_table.information_propertys_items_value, UNSIGNED) >= $data
AND  information_propertys_items_table.information_propertys_id=28
AND CONVERT(information_propertys_items_table.information_propertys_items_value, UNSIGNED) <= $data
))";
$property['select'][] = $element;

$external_propertys['filter'] = '1';

}


но оно выдает ошибку: Ошибка выполнения запроса! - Unknown column 'information_propertys_items_table.information_propertys_id' in 'where clause'
#
Re: Фильтр по дате от до (через доп свойства)
Делал так:

$month=@$_GET['month'];
$year=@$_GET['year'];

$external_propertys['curr_date']=$month_arr[strftime("%B", mktime(0,0,0,$month,1,$year))].strftime(" %G", mktime(0,0,0,$month,1,$year));

$month=($month<10)?"0".(int)$month:$month;

$element['type'] = 0;
$element['prefix'] = ' and (';
$element['name'] = 'information_items_date';
$element['if'] = '>';
$element['value'] = $year.'-'.$month.'-01';
$element['sufix'] = ')';
$property['select'][] = $element;

$month=(int)$month+1;

$element['type'] = 0;
$element['prefix'] = ' and (';
$element['name'] = 'information_items_date';
$element['if'] = '<';
$element['value'] = $year.'-'.$month.'-01';
$element['sufix'] = ')';
$property['select'][] = $element;
Команда разработчиков KAD Systems | Интеграция и нестандартные решения на совесть | Email: info@kad.systems Skype: kad.systems | http://kad.systems/ https://vk.com/kad_sys
#
Re: Фильтр по дате от до (через доп свойства)
не подходит , т.к. у меня в допсвойствах промежуток дат прописывается, а фильтры почему-то не работают...
#
Re: Фильтр по дате от до (через доп свойства)
Но ведь у информационных элементов уже есть целых 3 стандартных даты, в том числе дата начала и дата завершения публикации. Вероятно есть веская причина использовать именно даты из доп. свойств?
Команда разработчиков KAD Systems | Интеграция и нестандартные решения на совесть | Email: info@kad.systems Skype: kad.systems | http://kad.systems/ https://vk.com/kad_sys
#
Re: Фильтр по дате от до (через доп свойства)
Да. Именно. Суть в том, чтобы элемент был виден после даты завершения акции, а если реализовывать это                через дату завершения публикации, то элемент становится неактивным... Да и проще так администрировать данный раздел, чтобы не вспоминать какая дата за что отвечает.
#
Re: Фильтр по дате от до (через доп свойства)
RogerSSS писал(а):
если реализовывать это через дату завершения публикации, то элемент становится неактивным…
у метода ShowInformationSystem есть параметры, позволяющие отображать просроченные элементы наравне с обычными.
Заказов не беру. Консультирую редко.
#
Re: Фильтр по дате от до (через доп свойства)
Спасибо, но я всё-таки хотел бы получить ответ почему не работает моя конструкция... у меня на одним из сайтов в точности аналогичная конструкция фильтра (второй вариант) работает, но там фильтрация идет по целому числу, а тут похоже что-то не так с форматом даты...

может кто-то решал подобную задачу, подскажите, я первый раз сталкиваюсь с фильтрацией по дате, поэтому в этом вопросе пока не поднаторел
#
Re: Фильтр по дате от до (через доп свойства)
"огромное спасибо" всем. ниже решение, может кому-то будет полезно:

if (isset($_GET['data']))
{
$GLOBALS['INFSYS_result']['group'] = false;
$property=array();
$property['xml_show_group_type'] = 'all';
$property['xml_show_group_property'] = true;

$count_condition = 2;
$having_count= ' HAVING COUNT(information_propertys_items_table.information_propertys_items_id)= '.$count_condition;

$data = mysql_escape_string($_GET['data']);

$element['type'] = 0;
$element['name'] = 'information_items_date';
$element['prefix'] = ' and ';
$element['if'] = ' REGEXP ';
$element['value'] = $data;
$element['sufix'] = '';
$property['select'][] = $element;

$element = array();
$element['type'] = 1;
$element['prefix'] = ' or (';
$element['property_id'] = 27;
$element['if'] = '!=';
$element['value'] = '0';
$element['sufix'] = ' and STR_TO_DATE(information_propertys_items_value,\'%d.%m.%Y\') <= \''.$data.'\'';
$property['select'][] = $element;

$element = array();
$element['type'] = 1;
$element['prefix'] = ' or ';
$element['property_id'] = 28;
$element['if'] = '!=';
$element['value'] = '0';
$element['sufix'] = ' and STR_TO_DATE(information_propertys_items_value,\'%d.%m.%Y\') >= \''.$data.'\' ) GROUP BY information_propertys_items_table.information_items_id '.$having_count;
$property['select'][] = $element;

$external_propertys['filter'] = '1';

}
Авторизация