Структура инфоблоков на картинках выше.
[CODE]<?
$my_colors_medium_filter = array("LOGIC" => $_POST['logic']); // Постом передаем OR или AND
foreach($sel_colors_arr as $k=>$v) {
$my_colors_medium_filter[] = array('PROPERTY_COLORS'=>$v); // Добавляем каждый цвет в массив
}
$arSelect = Array("ID", "NAME", "PROPERTY_IMAGE", "PROPERTY_POSTID", "PROPERTY_TAGS", "PROPERTY_COLORS"); // что выбрать
$arFilter = Array("IBLOCK_ID"=>5,">PROPERTY_POSTID" => "0"); // Стартовые параметры
$arFilter[] = $my_colors_medium_filter; // Добавляем цвета
echo "<pre>";
var_dump($arFilter); // Выводим массив фильтра
echo "</pre>";
$res = CIBlockElement::GetList(Array(), $arFilter, false, Array("nPageSize"=>50), $arSelect); // Выбираем 50 записей по фильтру
$fc = 0;
while($ob = $res->GetNextElement())
{
echo 'нашел'; // Нашлось или нет..
}
[/CODE]
дамп выводит:
[CODE] array(3) {
["IBLOCK_ID"]=>
int(5)
[">PROPERTY_POSTID"]=>
string(1) "0"
[0]=>
array(3) {
["LOGIC"]=>
string(3) "AND"
[0]=>
array(1) {
["PROPERTY_COLORS"]=>
string(2) "96"
}
[1]=>
array(1) {
["PROPERTY_COLORS"]=>
string(3) "103"
}
}
}[/CODE]
Если мы выбираем например красный и желтый цвета и логику передаем OR , то в результате находятся записи где есть или красный или желтый или красный и желтый. (это работает как надо)
Если мы выбираем цвета красный и желтый и логику передаем AND , то в результате не найдет ничего. Смотря через MySQL в таблице свойств инфоблока есть записи у которых в свойствах стоит и красный и желтый, также если отдельно искать по красному и потом по желтому, то будут одинаковые результаты, то есть записи с двумя такими цветами есть, а вот почему они не находятся через данный запрос непонятно.
Буду очень признателен если поможете разобраться с данной проблемой.