Массовое добавление сразу нескольких объектов компонента в раздел

Предположим у нас есть форма, представляющая из себя прайс с возможностью отправить заявку администратору указав количество нужных наименований (в качестве дополнения можно реализовать просмотр собственных заявок и статуса их обработки), т.е. записать эту информацию в какой-либо раздел.

Причина поисков решения подобной задачи состоит в том, что в текущем функционале NetCat нет возможности массового добавления объектов в раздел (только по одному, с помощью стандартной формы компонента добавления объекта в раздел).

Использование шаблона «Действие после добавления объекта»

Первый логичный подход — использовать шаблон действий, а именно «Шаблон действия после добавления объекта»:

";
$count = count($Articul);
for ( $i = 0; $i < $count; $i++ ) {
   if ($Quantity[$i]>0){
      listQuery("INSERT into `Message72` (`User_ID`, `Subdivision_ID`, `Sub_Class_ID`, `Checked`, `Title`, `Articul`, `Price`, `Quantity`) values ('$AUTH_USER_ID','91','114','1','$Title','$Articul[$i]','$Price[$i]', '$Quantity[$i]') ");
   }
}
// далее остальной стандартный код для действия после добавления объекта в раздел

Смысл происходящего тут: поймать элементы POST-массива и, соответственно, для каждого произвести вставку в нужную таблицу значений по соответствующими индексами.

Соответственно можно также легко записать данные в любую другую БД используя стандартные php-функции работы с БД.

Использование стандартного файла добавления объекта add.php

Как вы можете видеть в режиме редактирования при открытии формы добавления формы добавления объекта в разделе url выглядит следующим образом: домен.ru/netcat/add.php?catalogue=1&sub=77&cc=79, где соответственно 1-сайт, 77-раздел сайта, 79-компонент в разделе.

Довольно несложно сообразить взглянув на содержание POST-запроса при добавлении объекта, что все значения передаются в параметрах являющимися именами полей. Такой подход работает и в GET-запросе, например, так: домен.ru/netcat/add.php?catalogue=1&sub=77&cc=79&posting=1&f_Title=Название объекта — такой запрос добавит объект в соответствующий раздел (77), с названием «Название объекта».

Соответственно, вызвав такой url несколько раз в цикле после добавления объекта можно добавить сразу нужное количество объектов, например так:

$count = count($Articul);
for ( $i = 0; $i < $count; $i++ ) {
 file_get_contents('http://домен.ru/netcat/add.php');
}

Результат работы функции — код страницы, появляющийся после добавления объекта, можно записать в переменную.

Если у вас есть замечания или интересный опыт в практическом решении подобных задач — вэлком в комментарии.

1 Комментарий

  • 17.01.2011 Кирилл:

    for ( $i = 0; $i < $count; $i++ ) { file_get_contents('http://домен.ru/netcat/add.php'); }

    здесь кстати, не переданы параметры на add.php, но это конечно подразумевается :)


Добавление комментария:

 css.php