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

CIBlockElement::Add, не добавляется более 5 фотографий

00 голосов
2
Добавляю фотоальбом с более чем пятью фотографями, а добавляется только пять из них. При этом, если сделать вывод $_FILES, то там файлы есть. Подскажите, в чём проблема может быть — всю голову сломал уже.
Код
 // Добавление фотоальбома

// $_FILES['photos'] — массив с фотографиями
// $_POST['album_name'] — имя альбома на русском

if(!empty($_FILES['photos']) && count($_FILES['photos']) > 0 && !empty($_POST['album_name'])){

    $iblock_elem = new CIBlockElement;
    $iblock_sect = new CIBlockSection;

    // Добавление раздела (альбома)
    $section_id = $iblock_sect->Add(
      array(
        'ACTIVE' => 'Y',
        'NAME' => $_POST['album_name'],
        'IBLOCK_SECTION_ID' => 0,
        'IBLOCK_ID' => 4,
        'CODE' => CUtil::translit($_POST['album_name'], LANGUAGE_ID, false) // Конвертированное в латиницу имя альбома
        )
      );

    if(intval($section_id) == 0) echo '<p>'.$iblock_sect->LAST_ERROR.'</p>'; // Вывод ошибки

    // Добавление элементов
    for($i = 0; $i < count($_FILES['photos']); $i++){
        if($_FILES['photos']['error'][$i] != 0
           || empty($_FILES['photos']['name'][$i]))
           continue;

        $picture = array();
        $picture['name']     = $_FILES['photos']['name'][$i];
        $picture['tmp_name'] = $_FILES['photos']['tmp_name'][$i];
        $picture['type']     = $_FILES['photos']['type'][$i];
        $picture['size']     = $_FILES['photos']['size'][$i];
        $picture['error']    = $_FILES['photos']['error'][$i];
 
        // Добавление элемента (фотографии)
        $element_id = $iblock_elem->Add(
          array(
            'ACTIVE' => GLOBAL_ACTIVE,
            'NAME' => $_POST['album_name'],
            'IBLOCK_SECTION_ID' => $section_id,
            'IBLOCK_ID' => 4,
            'DETAIL_PICTURE' => $picture
            )
          );

        if(intval($element_id) == 0) echo '<p>'.$iblock_sect->LAST_ERROR.'</p>';
    }

    $album = $section_id;
}
спросил 05 Сен, 13 от Dervish (120 баллов)

2 Ответы

00 голосов
Цитата
webprog пишет:
// Добавление элементов
for($i = 0; $i < count($_FILES['photos']); $i++){
if($_FILES['photos']['error'][$i] != 0
|| empty($_FILES['photos']['name'][$i]))
continue;

$picture = array();
$picture['name'] = $_FILES['photos']['name'][$i];
$picture['tmp_name'] = $_FILES['photos']['tmp_name'][$i];
$picture['type'] = $_FILES['photos']['type'][$i];
$picture['size'] = $_FILES['photos']['size'][$i];
$picture['error'] = $_FILES['photos']['error'][$i];

Ну, всё правильно. Размер массива $_FILES['photos'], судя по коду, как раз равен 5
раз: $_FILES['photos']['name']
два: $_FILES['photos']['tmp_name']
три: $_FILES['photos']['type']
четыре: $_FILES['photos']['size']
пять: $_FILES['photos']['error']
smile:)
ответил 05 Сен, 13 от Ly (4,580 баллов)
00 голосов
И точно же. Спасибо smile:)
ответил 29 Ноя, 13 от Dervish (120 баллов)

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

0 голосов
2 ответов
0 голосов
5 ответов
0 голосов
2 ответов
спросил 29 Апр, 14 от Canon (260 баллов)
0 голосов
1 ответ
спросил 03 Янв, 14 от ufoman (390 баллов)
0 голосов
5 ответов