Fourfolium
@Fourfolium
Интересующийся разработкой

Как сделать сохранение значений веб-формы в EXCEL-фаил и отправить как вложение из веб-формы (Веб-формы 1С-Битрикс)?

Здравствуйте!

Объясните пожалуйста, каким способом можно реализовать следующее (приведите практические примеры): Есть веб-форма. Нужно чтобы данные, которые были введены гостем в веб-форме, сохранялись в файл в формате .xls (с соответствующими названиями полей) и передавались в письме (как вложение) на почту указанную в почтовом шаблоне после отправки веб-формы.
  • Вопрос задан
  • 2099 просмотров
Пригласить эксперта
Ответы на вопрос 3
coderisimo
@coderisimo
Уважаемый Четырёхлистник , вы уже задавали этот вопрос ранее и задаете вновь. Важно понять , что вопрос получился глобальный и если , полученные в первый раз советы вам не понятны следует использовать хитрую методику. "Ешьте слона частями" ))))) . Рекомендую, ибо данный подход мне, как неофиту, очень пригодился. Итак , как отправить значения веб-формы в виде эксель файла? Разбейте задачу на подзадачи. Например :
1) Получаем данные из формы в PHP скрипте
2) Подключаем туда же библиотеку PHPExcel
3) Создаем посредством PHPExcel документ Excel и добавляем в него данные из формы.
4) Сохраняем созданный документ куда нужно
5) Отправляем созданный документ получателю.

Есть еще непонятные этапы? Включите их в список. Результат - глобальная задача разбитная на подзадачи. Приблизительно так в вашем случае выглядит слон, разделенный на кусочки ))). Переварить их гораздо проще, искать ответы тоже. Т.е если вам не понятен первый пункт - вы ищите ответы в сети или задаете вопрос здесь. Решили п.1 ? Переходите ко второму. Удачи.
Ответ написан
winer
@winer
занимаюсь разработкой сайтов на 1c-bitrix
  1. Пишем обработчик события onAfterResultAdd
  2. Внутри обработчика получаем данные с помощью GetList
  3. С помощью какой нибудь библиотеки записываете данные в excel файл. Например можно использовать PHPExcel, примеров по нему в интернете уйма
  4. С помощью CFile::SaveFile регистрируете файл в системе
  5. С помощью CEvent::Send отправляете созданный файл на нужную Вам почту. Последний параметр метода нужен как раз для отправки файлов.

Ответ написан
gzhegow
@gzhegow
aka "ОбнимиБизнесмена"
К Кодерисимо добавлю что файл отправить "как будто через форму" можно используя multipart/form-data, если нужно к емейлу прикрепить все совсем просто - fopen, fwrite, fclose, mail($headers = ....file);

Если идет отправка на другой скрипт - используйте multipart/form-data или curl. У всех свои косяки - curl имеет свойство повисать, поитогу время от времени второй запрос не доходит, потому что первый все еще висит, поэтому нужно делать несколько запросов через while пока не исчерпается лимит или пока не будет получен ответ.

multipart в свою очередь сложнее в написании - нужно определить разделитель, а потом тупо отправлять контент как строку, разделяя каждый файл разделителем, переносом строки, потом контент, потом 2 переноса, а строку - закодированную любым способом - у принимающего скрипта появится массив $_FILES.

Стоит отметить, что действительно, как мне и пояснили на тостере - отправка данных через multipart/form-data не сделает отправку гарантированной в 100% случаев - это всего лишь позволит в случае успешного запроса автоматически закинуть файл во временную папку, так что ничто не мешает отправить данные в виде json - если это текстовый файл, а не уже закодированный бинарник.

Другой вопрос если задачей является сохранить инфу из формы в эксель, в этом случае вам не нужно отправлять файл, вам нужно отправить данные скрипту, который из данных сделает файл.

Но можете поизвращаться с отправкой сразу файла, еслли хочется помучаться.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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