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

Как через форму добавлять элементы в секцию инфоблока?

00 голосов
9
Как через форму добавлять элементы в секцию инфоблока?
Уже пробовал дописывать в настроках формы ID секции блока, все одно не добавляются в секцию, а на верхний уровень.

Может кто сталкивался? Помогите, плиз :cry:
спросил 09 Март, 13 от speed (160 баллов)

9 Ответы

00 голосов
в чем сложность?

вто пример

Код
<?
$el = new CIBlockElement;

$PROP = array();
$PROP[12] = "Белый";  // свойству с кодом 12 присваиваем значение "Белый"
$PROP[3] = 38;        // свойству с кодом 3 присваиваем значение 38

$arLoadProductArray = Array(
  "MODIFIED_BY"    => $USER->GetID(), // элемент изменен текущим пользователем
  "IBLOCK_SECTION" => false,          // элемент лежит в корне раздела
  "IBLOCK_ID"      => 18,
  "PROPERTY_VALUES"=> $PROP,
  "NAME"           => "Элемент",
  "ACTIVE"         => "Y",            // активен
  "PREVIEW_TEXT"   => "текст для списка элементов",
  "DETAIL_TEXT"    => "текст для детального просмотра",
  "DETAIL_PICTURE" => CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"]."/image.gif")
  );

if($PRODUCT_ID = $el->Add($arLoadProductArray))
  echo "New ID: ".$PRODUCT_ID;
else
  echo "Error: ".$el->LAST_ERROR;
?>
      



вот параметр
"IBLOCK_SECTION" => false,
которому вы должны передать ID вашей секции
ответил 09 Март, 13 от Lekar (2,220 баллов)
00 голосов
Я прошу прощение, но я не особо в программировании :) куда это все вставлять?
ответил 17 Март, 13 от speed (160 баллов)
00 голосов
Цитата
Виктор пишет:
Я прошу прощение, но я не особо в программировании С улыбкой куда это все вставлять?


В обработчик вашей формы
ответил 21 Апр, 13 от Lekar (2,220 баллов)
00 голосов
получится что типа этого...

это пример!

Код
<form action="" enctype="multipart/form-data" method="post" name="ELEMENT_ADD" >
<table width="100%" cellpadding="5" cellspacing="5" border="0">
  <tr>
    <td valign="top">Выберите раздел*:</td>
    <td>
    <select name="SECTION_ID[]" multiple="multiple" size="8">
        <? $items = GetIBlockSectionList(43, false, Array(), 0);
           while($arItem = $items->GetNext())
           { ?>
           <option value="<?=$arItem['ID']?>"><?=$arItem['NAME']?></option>   
          <? } ?>  
    </select> <br/>
    * - для выделения нескольких категорий, удерживайте (Ctrl)
    </td>
  </tr>
   <tr>
    <td valign="top">Название*:</td>
    <td><input name="NAME" type="text" size="50" maxlength="50" /></td>
  </tr>
   <tr>
    <td valign="top">Краткое описание:</td>
    <td><textarea name="PREVIEW_TEXT" cols="50" rows="7"></textarea></td>
  </tr>
   <tr>
    <td valign="top">Подробное описание:</td>
    <td><textarea name="DETAIL_TEXT" cols="50" rows="7"></textarea></td>
  </tr> 
  <tr>
    <td colspan="2"><input name="SAVE" type="submit" value="Сохранить" /> <input name="reset" type="reset" value="Сбросить" /></td>
  </tr> 
</table>
</form>



<?

if (!empty($_POST['SAVE']))
 {
   if( count($_POST['SECTION_ID'])>0 &&  strlen($_POST['NAME']) )
     {
         $el = new CIBlockElement;
         
         $PROP = array();
            $arLoadProductArray = Array(
           "MODIFIED_BY"       => $USER->GetID(), // элемент изменен текущим пользователем
           "IBLOCK_SECTION"    => $_POST['SECTION_ID'],          // элемент лежит в корне раздела
           "IBLOCK_ID"         => 43,
           "PROPERTY_VALUES"   => $PROP,
           "NAME"              => $_POST['NAME'],
           "ACTIVE"            => "Y",            // активен
           "PREVIEW_TEXT"      => $_POST['PREVIEW_TEXT'],
           "DETAIL_TEXT"       => $_POST['DETAIL_TEXT'],
           );
         
         if($PRODUCT_ID = $el->Add($arLoadProductArray))
           {
         
           echo "<b>успешно</b>";
           }
         else
           {
           echo "Error: ".$el->LAST_ERROR;
              } 
            
    }
   else
     {
   echo '<b>Не верно заполнены все обязательные поля!!!</b>' ; 
    }
 }
?>

ответил 13 Авг, 13 от Lekar (2,220 баллов)
00 голосов
Уау, счас попробуем :)
ответил 13 Ноя, 13 от speed (160 баллов)
00 голосов
Вот у меня такая есть форма:

<?=$FORM->ShowFormTitle("")?>
<br />

<br />
<?=$FORM->ShowFormDescription("")?>
<br />
<font color="red"><?=$FORM->ShowFormErrors()?></font><font color="green"><?=$FORM->ShowFormNote()?></font>
<br />

<tbody> </tbody>
<?=$FORM->ShowInputCaption("type","")?> <?=$FORM->ShowInput('type')?>
<?=$FORM->ShowInputCaption("position","")?><?=$FORM->ShowInput('position')?>
<?=$FORM->ShowInputCaption("area","")?><?=$FORM->ShowInput('area')?>
<?=$FORM->ShowInputCaption("station","")?><?=$FORM->ShowInput('station')?>
<?=$FORM->ShowInputCaption("direction","")?><?=$FORM->ShowInput('direction')?>
<?=$FORM->ShowInputCaption("mkad","")?><?=$FORM->ShowInput('mkad')?>
<?=$FORM->ShowInputCaption("square","")?><?=$FORM->ShowInput('square')?>
<?=$FORM->ShowInputCaption("qrooms","")?><?=$FORM->ShowInput('qrooms')?>
<?=$FORM->ShowInputCaption("price_from","")?><?=$FORM->ShowInput('price_from')?> <?=$FORM->ShowInputCaption("price_to","")?> <?=$FORM->ShowInput('price_to')?>

<br />

<br />
<?=$FORM->ShowInputCaption("fio","")?><?=$FORM->ShowInput('fio')?>
<?=$FORM->ShowInputCaption("address","")?><?=$FORM->ShowInput('address')?>
<?=$FORM->ShowInputCaption("phone","")?><?=$FORM->ShowInput('phone')?>
<?=$FORM->ShowSubmitButton("Отправить","")?><?=$FORM->ShowResetButton("Очистить","")?>

------------------------
<?=$FORM->ShowInput('type')?> - вот это выпадающий список с 4мя назавниями секций. Может на пальцах покажите что и куда встявлять? :cry:
ответил 21 Фев, 14 от speed (160 баллов)
00 голосов
1) Раз вы не очень разбираетесь в программировании то я вам посоветую создать html форму, я привел ее выше, а не использовать api
2) поменяйте только ID инфоблока тут и все

Код
<form action="" enctype="multipart/form-data" method="post" name="ELEMENT_ADD" >
<table width="100%" cellpadding="5" cellspacing="5" border="0">
  <tr>
    <td valign="top">Выберите раздел*:</td>
    <td>
    <select name="SECTION_ID[]" multiple="multiple" size="8">
        <? $items = GetIBlockSectionList(43, false, Array(), 0);
           while($arItem = $items->GetNext())
           { ?>
           <option value="<?=$arItem['ID']?>"><?=$arItem['NAME']?></option>   
          <? } ?>  
    </select> <br/>
    * - для выделения нескольких категорий, удерживайте (Ctrl)
    </td>
  </tr>
   <tr>
    <td valign="top">Название*:</td>
    <td><input name="NAME" type="text" size="50" maxlength="50" /></td>
  </tr>

   <tr>
    <td valign="top">Краткое описание:</td>
    <td><textarea name="PREVIEW_TEXT" cols="50" rows="7"></textarea></td>
  </tr>
   <tr>
    <td valign="top">Подробное описание:</td>
    <td><textarea name="DETAIL_TEXT" cols="50" rows="7"></textarea></td>
  </tr> 
  <tr>
    <td colspan="2"><input name="SAVE" type="submit" value="Сохранить" /> <input name="reset" type="reset" value="Сбросить" /></td>
  </tr> 
</table>
</form>



<?

if (!empty($_POST['SAVE']))
 {
   if( count($_POST['SECTION_ID'])>0 &&  strlen($_POST['NAME']))
     {
         $el = new CIBlockElement;
         
         $PROP = array();
         $arLoadProductArray = Array(
           "MODIFIED_BY"       => $USER->GetID(), 
           "IBLOCK_SECTION"    => $_POST['SECTION_ID'],          // ваш массив с ID секции 
           "IBLOCK_ID"         => 43, // ваш ID инфоблока
           "PROPERTY_VALUES"   => $PROP,
           "NAME"              => $_POST['NAME'],
           "ACTIVE"            => "Y",            // активен
           "PREVIEW_TEXT"      => $_POST['PREVIEW_TEXT'],
           "DETAIL_TEXT"       => $_POST['DETAIL_TEXT'],
           );
         
         if($PRODUCT_ID = $el->Add($arLoadProductArray))
           {
            echo "<b>успешно</b>";
           }
         else
           {
           echo "Error: ".$el->LAST_ERROR;
              } 
            
    }
   else
     {
   echo '<b>Не верно заполнены все обязательные поля!!!</b>' ; 
    }
 }
?>
ответил 12 Июнь, 14 от Lekar (2,220 баллов)
00 голосов
:cry: Вставил эту форму, приведенную выше, ваще белая страница с однои только пунктом - Выберите раздел. И все ...
ЗЫ ID прописал свои.

По-моему, битрикс что-то режет в коде....
ответил 11 Окт, 14 от speed (160 баллов)
00 голосов
210361677 стучите, помогу
ответил 11 Фев, 15 от Lekar (2,220 баллов)

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

0 голосов
4 ответов
0 голосов
1 ответ
0 голосов
0 ответов
0 голосов
5 ответов
спросил 10 Ноя, 13 от Gill (720 баллов)
0 голосов
3 ответов
спросил 04 Апр, 14 от Stalkerr (280 баллов)