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

2 вопроса: CIBlock::GetList & CIBlockElement::GetList

00 голосов
6
Что-то никак не могу разобраться. Есть 2 задачи:
Первая: имеется инфоблок, в котором для каждой записи указывается ID пользователя, его создавшего. Нужно получить количество записей, у пользователя. Пишу код:
Код
$USER_ID=$USER->GetId();      
$res=CIBlock::GetList(Array("DATE_ACTIVE_FROM"=>"DESC", "SORT"=>"ASC", "NAME" => "ASC"),Array('TYPE'=>'test_iblock','ACTIVE'=>'Y',"CNT_ACTIVE"=>"Y","PROPERTY_P_USER_ID"=>$USER_ID), true);
while($item=$res->GetNext())
{
   $num_rec=$item["ELEMENT_CNT"];
}

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

Вторая: есть другой инфоблок, в котором для каждой записи указывается ID пользоватея, его создавшего. Нужно получить последнюю добавленную пользователем запись, а если таковых нет, вывести "0". Пишу код:
Код
$res_rate=CIBlockElement::GetList(array("ID"=>"DESC"), array("ACTIVE"=>"Y", "IBLOCK_TYPE"=>"Rating","PROPERTY_R_USER_ID"=>$USER_ID), false, array("nTopCount"=>1), array("PROPERTY_R_RATE"));            
while($ar=$res_rate->GetNext())
{         
$curent_rate=$ar["PROPERTY_R_RATE_VALUE"];
if(!empty($curent_rate))
echo "0";
}

Если у пользователя есть записи, то все нормально, а вот если нет, то ноль выводится не хочет, я так понимаю, что нужно еще на стадии $res_rate как-то проверять существуют ли записи, но как это сделать не могу придумать..
спросил 12 Сен, 13 от Snezhka (2,240 баллов)

6 Ответы

00 голосов
Код
if ($res_rate->SelectedRowsCount()==0) echo "0"; 
ответил 12 Сен, 13 от NitroGeN (2,840 баллов)
00 голосов
а зачем вам свойство? Есть же поле CREATED_BY
ответил 10 Дек, 13 от Almarea (3,760 баллов)
00 голосов
Дмитрий Яковенко, дело в том, что возможно, что админу будет добавлять записи за пользователей и просто будет вносить, какой юзер внес :)
ответил 24 Март, 14 от Snezhka (2,240 баллов)
00 голосов
Для первой задачи используете не тот класс, нужен CIblockElement и опять же SelectedRowsCount
ответил 16 Июль, 14 от Almarea (3,760 баллов)
00 голосов
Евгений Малков, Спасибо!
А в первом вопросе как быть?
UPD: а в соседней ветке советовали именно его..Спасибо
ответил 17 Ноя, 14 от Snezhka (2,240 баллов)
00 голосов
Переделал:
Код
$USER_ID=$USER->GetId();
$res=CIBlockElement::GetList(array("ID"=>"DESC"), array("ACTIVE"=>"Y", "IBLOCK_TYPE"=>"Invitation","PROPERTY_R_USER_ID"=>$USER_ID), false, array(), array("PROPERTY_R_RATE"));
$inv_rating=$res->SelectedRowsCount();

Возвращает 0, хотя точно одна запись от указываемого пользователя есть..
ответил 13 Март, 15 от Snezhka (2,240 баллов)

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

0 голосов
1 ответ
спросил 19 Май, 13 от Snezhka (2,240 баллов)
0 голосов
6 ответов
спросил 09 Окт, 13 от Snezhka (2,240 баллов)
0 голосов
3 ответов
спросил 31 Март, 14 от Eoling (140 баллов)
0 голосов
1 ответ
спросил 09 Янв, 14 от malagoi (380 баллов)
0 голосов
1 ответ