@pavelmosin

CIBlockSection::Add в цикле?

Как добавить все разделы из массива? После выполнения цикла добавляется последний из разделов $arSectionToAdd

<?
	$arSectionToAdd = array (
		'sect-1',
		'sect-2',
		'sect-3',
		'sect-4',
	);


	$bs = new CIBlockSection;


	foreach (  $arSectionToAdd as $sectionToAddd  ) {


		$codeSection = str_replace(
			'.',
			'-',
			$sectionToAddd
		);


		$arFields = Array(
			"ACTIVE" => 'Y',
			"IBLOCK_SECTION_ID" => false,
			"IBLOCK_ID" => 43,
			"NAME" => $sectionToAddd,
			"CODE" => $codeSection,
			"SORT" => '500',
			"PICTURE" => '',
			"DESCRIPTION" => '',
			"DESCRIPTION_TYPE" => ''
		);


		if( $ID > 0 ) {

			$res = $bs->Update(
				$ID,
				$arFields
			);
		}	else {

			$ID = $bs->Add($arFields);
			$res = ( $ID > 0 );
		}
	}
?>
  • Вопрос задан
  • 613 просмотров
Решения вопроса 1
winer
@winer
занимаюсь разработкой сайтов на 1c-bitrix
Ваш код написан так, чтобы было выполнено добавление первого элемента, а все последующие выполняют обновление. Так происходит из за условия if( $ID > 0 ).

$ID = $bs->Add($arFields);//добавляете элемент и записываете его ID в переменную
$res = ( $ID > 0 );

А на следующем шаге, не выполнив обнуления переменной ID, происходит обновление предыдущей записи.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы