Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

выборка свойств элемента

00 голосов
6
в iblock.element.add.list пытаюсь сделать выборку свойств элемента

Код
foreach ($arResult["ELEMENTS"] as $arElement)
{
$elem_ID = $arElement['ID'];
$aFilter = Array('IBLOCK_ID'=>23,'ID'=>"elem_ID");
$aSelect = Array("IBLOCK_NAME", "DATE_ACTIVE_FROM","PROPERTY_87","PROPERTY_87.NAME", "PROPERTY_87.PROPERTY_81");      

$db_VALUE = CIBlockElement::GetList(Array(), $aFilter, false, false, $aSelect); 
$a=$db_VALUE->Fetch();
$arResult["XXXX"] = $a["IBLOCK_NAME"].$a["PROPERTY_87_VALUE"].$a["DATE_ACTIVE_FROM"].$a["PROPERTY_87.NAME"].$a["PROPERTY_87.PROPERTY_81"];


проблема - $arElement['ID'] не передает ID элемента, хотя через шаблон выводится на ура. а если в aFilter ID прописать ручками, то не осуществляется выборка полей "PROPERTY_87.NAME", "PROPERTY_87.PROPERTY_81" (свойства привязанного элемента). помогите плиз советом, 2 дня убил.
спасибо!
спросил 21 Сен, 13 от Exet (380 баллов)

6 Ответы

00 голосов
Цитата
Игорь Гладких пишет:
$elem_ID = $arElement['ID'];
$aFilter = Array('IBLOCK_ID'=>23,'ID'=>"elem_ID");

Наверное, всё же так:
Код
$aFilter = array(
    'IBLOCK_ID' => 23,
    'ID' => $elem_ID,
);

А то вы вместо значения $elem_ID передаёте строку "elem_ID".
ответил 28 Сен, 13 от Ly (4,580 баллов)
00 голосов
спасибо большое, проморгал с $ :)

Код
foreach ($arResult["ELEMENTS"] as $arElement)
{
$ELEMENT_ID = $arElement["ID"];
$aFilter = Array("IBLOCK_ID"=>23,"ID"=>$ELEMENT_ID);
$aSelect = Array("PROPERTY_87.NAME", "PROPERTY_87.PROPERTY_81");      

$db_VALUE = CIBlockElement::GetList(Array(), $aFilter, false, false, $aSelect); 
$a=$db_VALUE->Fetch();
$arResult["prop99"] = $a["PROPERTY_87_NAME"].$a["PROPERTY_87_PROPERTY_81_VALUE"];


осталась проблема - выводит данные только по последнему элементу, для остальных - дублируются.
ответил 28 Дек, 13 от Exet (380 баллов)
00 голосов
Цитата
Игорь Гладких пишет:
$arResult["prop99"]

А вы что, выводите данные из $arResult["prop99"]?
Если да, то так и должно быть. Что в цикле последним попало, то и будет выводиться.
ответил 13 Апр, 14 от Ly (4,580 баллов)
00 голосов
в шаблоне вывод происходит так

Код
<?if (count($arResult["ELEMENTS"]) > 0):?>
<?foreach ($arResult["ELEMENTS"] as $arElement):?>
<tr> <td>ID_<?=$arElement["ID"]?></td>
<td><?=$arElement["DATE_ACTIVE_FROM"]?></td>
<td><?=$arElement["SHOW_COUNTER"]?></td>
<td><?=$arElement["ACTIVE"]?></td>


через резалт модифер получаю доп. значение свойств элемента ($arResult["prop99"])

Код
foreach ($arResult["ELEMENTS"] as $arElement) 
{ 
$ELEMENT_ID = $arElement["ID"]; 
$aFilter = Array("IBLOCK_ID"=>23,"ID"=>$ELEMENT_ID); 
$aSelect = Array("PROPERTY_87.NAME", "PROPERTY_87.PROPERTY_81");       

$db_VALUE = CIBlockElement::GetList(Array(), $aFilter, false, false, $aSelect); 
$a=$db_VALUE->Fetch(); 
$arResult["prop99"] = $a["PROPERTY_87_NAME"].$a["PROPERTY_87_PROPERTY_81_VALUE"];

в шаблон добавлаю

Код
<td><?=$arResult["prop99"]?></td>

но для всех элементов присваивается один и тот же результат.

я так понимаю, в резалт модифер ошибка здесь
Код
foreach ($arResult["ELEMENTS"] as $arElement) 

только как правильно нужно, не знаю
ответил 06 Авг, 14 от Exet (380 баллов)
00 голосов
Ошибка здесь:
Код
$arResult["prop99"] = $a["PROPERTY_87_NAME"].$a["PROPERTY_87_PROPERTY_81_VALUE"];

Вы в одно и то же поле массива запихиваете данные для всех элементов. Ясное дело, что после этого у всех элементов показываются данные последнего.

Хотя бы так сделайте:
Код
$arResult[$ELEMENT_ID]["prop99"] = $a["PROPERTY_87_NAME"].$a["PROPERTY_87_PROPERTY_81_VALUE"];
ответил 10 Дек, 14 от Ly (4,580 баллов)
00 голосов
ох КАК хорошо теперь работает!!!!
спасибо!!!
господа, с наступающим!!!
ответил 02 Апр, 15 от Exet (380 баллов)

Похожие вопросы

0 голосов
4 ответов
спросил 25 Янв, 14 от Lata (220 баллов)
0 голосов
6 ответов
спросил 12 Окт, 13 от Asteria (1,840 баллов)
0 голосов
2 ответов
спросил 30 Апр, 14 от Kiriel (2,010 баллов)