Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Данные из формы в документ Word.

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Описание: Добавление в word'овский документ данных, введенных из формы на сайте.
pioneer
Отправлено: 11 Февраля, 2013 - 15:42:35
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Февр. 2013  


Помог: 0 раз(а)




Привет всем форумчанам! Я в PHP совсем ещё новичок, но базовые знания по html и css немного имею. Недавно я тут наткнулся на одну интересную тему [url]http://forum.php.su/topic.php?forum=60&topic=979#[/url], где помогали другому участнику. Так вот, меня тоже очень заинтересовал этот вопрос, но топик уже устарел. Я у себя на localhost, используя denwer, создал два документа - index.html и word.php соответственно, поместив их в одну папку. Заполнив форму, нажал кнопку "Создать документ!", но вместо ожидаемого скачивания вордовского документа вылезли след. надписи:

Warning: Cannot modify header information - headers already sent by (output started at Z:\home\localhost\www\diplom\word.php:1) in Z:\home\localhost\www\diplom\word.php on line 7

Warning: Cannot modify header information - headers already sent by (output started at Z:\home\localhost\www\diplom\word.php:1) in Z:\home\localhost\www\diplom\word.php on line 8
Автор: StasHjwb

Ниже привожу коды своих тестовых файликов. Заранее, огромное Вам СПАСИБО за помощь и если не останетесь равнодушны и откликнетесь.

index.html
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <!DOCTYPE HTML>
  3. <html>
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  6. </head>
  7. <form action="word.php" method="POST">
  8. <p>
  9.    <label> <b> Название документа: </b> <br /> </label>
  10.    <input name="docname" />
  11. </p>
  12.  
  13. <p>
  14.    <label> <b> Ваше имя: </b> <br /> </label>
  15.    <input name="myself" />
  16. </p>
  17.  
  18. <p>
  19.    <label> <b> Ваш текст: </b> <br /> </label>
  20.    <textarea name="text" rows="10" cols="25" tabindex="2"> </textarea>
  21. </p>
  22. <input type="submit" value="Создать документ!" />
  23. </form>
  24. </html>
  25.  


word.php
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. if (isset($_POST['docname']) && !empty($_POST['docname'])) $docname = $_POST['docname'];
  4. if (isset($_POST['myself'])  && !empty($_POST['myself']))  $myself  = $_POST['myself'];
  5. if (isset($_POST['text'])    && !empty($_POST['text']))    $text    = $_POST['text'];
  6.  
  7. if (isset($docname) && isset($myself) && isset($text)) {
  8. header('Content-type: application/vnd.ms-word');
  9. header('Content-Disposition: attachment;Filename=' . $docname . '.doc');
  10.  
  11. echo '<html>';
  12. echo '<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">';
  13. echo '<body>';
  14. echo 'Автор: ' . $myself;
  15. echo '<b>' . $text . '</b>';
  16. echo '</body>';
  17. echo '</html>';
  18. }
  19. ?>
  20.  
 
 Top
DeepVarvar Супермодератор
Отправлено: 11 Февраля, 2013 - 15:51:28
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Тут есть ответ на ваш вопрос: http://forum.php.su/topic.php?forum=33&topic=793
Плюс попутно еще несколько замечаний. Закатив глазки
 
 Top
pioneer
Отправлено: 11 Февраля, 2013 - 16:52:32
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Февр. 2013  


Помог: 0 раз(а)




DeepVarvar, перечитал Вашу тему пару раз, понял что у меня ужасный стиль PHP-кодирования, и это не удивительно - я ведь новичок Огорчение Судя из Ваших замечаний попробовал сделать так (скорее всего, выводы сделал неправильные??):

Все переменные и операции, как и было Вами упомянуто, объявил до загузки шаблона.
index.php
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. if (isset($_POST['docname']) && !empty($_POST['docname'])) $docname = $_POST['docname'];
  4. if (isset($_POST['myself'])  && !empty($_POST['myself']))  $myself  = $_POST['myself'];
  5. if (isset($_POST['text'])    && !empty($_POST['text']))    $text    = $_POST['text'];
  6.  
  7. if (isset($docname) && isset($myself) && isset($text)) {
  8. header('Content-type: application/vnd.ms-word');
  9. header('Content-Disposition: attachment;Filename=' . $docname . '.doc');
  10.  
  11. echo '<html>';
  12. echo '<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">';
  13. echo '<body>';
  14. echo 'Автор: ' . $myself;
  15. echo '<b>' . $text . '</b>';
  16. echo '</body>';
  17. echo '</html>';
  18. }
  19.  
  20. require 'template.html';
  21. ?>
  22.  


Потом, пытаюсь загрузить сам шаблон.
template.html
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <!DOCTYPE HTML>
  3. <html>
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  6. </head>
  7. <form action="word.php" method="POST">
  8. <p>
  9.    <label> <b> Название документа: </b> <br /> </label>
  10.    <input name="docname" />
  11. </p>
  12.  
  13. <p>
  14.    <label> <b> Ваше имя: </b> <br /> </label>
  15.    <input name="myself" />
  16. </p>
  17.  
  18. <p>
  19.    <label> <b> Ваш текст: </b> <br /> </label>
  20.    <textarea name="text" rows="10" cols="25" tabindex="2"> </textarea>
  21. </p>
  22. <input type="submit" value="Создать документ!" />
  23. </form>
  24. </html>
  25.  


Но на мою форму то повешен скрипт "word.php", а я его, якобы, пытаюсь выполнить в индексной странице "index.php". Что мне делать?
 
 Top
etoYA
Отправлено: 11 Февраля, 2013 - 17:26:37
Post Id



Участник


Покинул форум
Сообщений всего: 1859
Дата рег-ции: Июль 2011  
Откуда: Крым


Помог: 21 раз(а)




pioneer пишет:
Но на мою форму то повешен скрипт "word.php", а я его, якобы, пытаюсь выполнить в индексной странице "index.php". Что мне делать?

оставить пустую строку
 
 Top
pioneer
Отправлено: 11 Февраля, 2013 - 17:51:19
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Февр. 2013  


Помог: 0 раз(а)




etoYA, попробовал...происходит та же самая фигня. перед формой появляются сообщения об ошибке:
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\localhost\www\diplom\index.php:1) in Z:\home\localhost\www\diplom\index.php on line 7

Warning: Cannot modify header information - headers already sent by (output started at Z:\home\localhost\www\diplom\index.php:1) in Z:\home\localhost\www\diplom\index.php on line 8
Автор: StasHello, World! 
 
 Top
etoYA
Отправлено: 11 Февраля, 2013 - 18:17:26
Post Id



Участник


Покинул форум
Сообщений всего: 1859
Дата рег-ции: Июль 2011  
Откуда: Крым


Помог: 21 раз(а)




1) BOM
2) Перед header не должно выводится ничего!
PHP:
скопировать код в буфер обмена
  1.  
  2. header('Content-type: application/vnd.ms-word');
  3. header('Content-Disposition: attachment;Filename=' . $docname . '.doc');
  4.  

Такак в роде ничего не выводится, опять же проверьте BOM
 
 Top
imya
Отправлено: 11 Февраля, 2013 - 19:31:25
Post Id



Участник


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Сент. 2012  
Откуда: Запорожье, Украина


Помог: 19 раз(а)




Нужно сохранить файл word.php без BOM и тогда не будут выскакивать ошибки(если они конечно из-за этого выскакивают).
Для этого в текстовом редакторе(например, Notepad ++), зайдите в Кодировки - кодировать в UTF-8 без ВОМ и сохраните.


-----
PHP:
скопировать код в буфер обмена
  1. do {box != cat;} while (cat != box);


Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
 
My status
 Top
pioneer
Отправлено: 11 Февраля, 2013 - 23:07:42
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Февр. 2013  


Помог: 0 раз(а)




imya, etoYA, СПАСИБО Вам ОГРОМНОЕ, ребята! Все сработало. Дело было в BOM (хотя я до сих пор толком так и не понял зачем был нужен этот юникод-символ!?). А можно ли теперь поманипулировать форматированием документа? Ну, например, при загрузке документа режим чтения по умолчанию - "веб-документ", а не привычная "разметка страницы", как хотелось бы. И можно ли, к примеру, прикрепляя картинку, вставить ее в определенное место в документе? Заранее, опять же, СПАСИБО большущее за помощь!
 
 Top
DeepVarvar Супермодератор
Отправлено: 11 Февраля, 2013 - 23:21:55
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Какой BOM ребята? У него в первой строке перевод каретки.
Смотрите сами - даже тут на форуме видно - первая строка кода перед открывающим тегом пхп пустая. Закатив глазки
А я в своей заметке об этом писал. Надо pioneer'у еще в третий раз туда заглянуть Закатив глазки
 
 Top
pioneer
Отправлено: 11 Февраля, 2013 - 23:39:15
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Февр. 2013  


Помог: 0 раз(а)




DeepVarvar, спасибо за советы, но проблемы были все-таки с BOM. перевод каретки в index.php у меня только после <?php и никаких пустых строк в начале документа нет))
 
 Top
DeepVarvar Супермодератор
Отправлено: 11 Февраля, 2013 - 23:43:54
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




pioneer пишет:
и никаких пустых строк в начале документа нет))
Ага:
 
 Top
pioneer
Отправлено: 11 Февраля, 2013 - 23:49:11
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Февр. 2013  


Помог: 0 раз(а)




DeepVarvar, а если попробовать расположить тэги так? :
тэг редактора PHP
... тут код...
тэг редактора /PHP
вот и выходит что, якобы, первая и последняя строка - пустые.

(Отредактировано автором: 11 Февраля, 2013 - 23:52:28)

 
 Top
pioneer
Отправлено: 12 Февраля, 2013 - 16:41:39
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Февр. 2013  


Помог: 0 раз(а)




Ребята, и все же как же можно поварьировать параметрами форматирования документа? Закатив глазки
 
 Top
caballero
Отправлено: 12 Февраля, 2013 - 16:44:15
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




шо сие такое "параметры форматирования". Чьи параметры?


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
pioneer
Отправлено: 12 Февраля, 2013 - 17:03:48
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Февр. 2013  


Помог: 0 раз(а)




caballero, ну я писал выше, что хотелось бы, чтобы скачиваемый документ открывался с видом "разметка страницы", а не "веб-документ" плюс вот, например, мне нужно сделать следующее:
1) выбрать в форме картинку у себя на компьютере
2) вставить её в нужное место в будущем док-те Word, например, с новой строки после слов "Hello, World!"
3) скачать полученный документ (ну, это уже получается вроде, слава Богу)
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB