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
Форумы портала PHP.SU :: Версия для печати :: Не получается взять текст с textarea в $_POST, не пойму почему.
Форумы портала PHP.SU » » Вопросы новичков » Не получается взять текст с textarea в $_POST, не пойму почему.

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

1. Webtest - 08 Сентября, 2014 - 12:50:37 - перейти к сообщению
Подскажите в чем проблема?
Цикл рисует несколько текстовых форм и кнопок:
CODE (html):
скопировать код в буфер обмена
  1. <textarea name="answerArea" class="textareaForAnswer"></textarea>
  2. <button class="questionBtn" name="sendAnswer" value="<?php echo $showMessage['id'][$num]; ?>">Ответить</button>

Вот обработчик:
PHP:
скопировать код в буфер обмена
  1. if (isset($_POST['sendAnswer'])) {
  2.     echo $_POST['sendAnswer'];
  3.     echo $_POST['answerArea'];
  4. }

Почему код всегда выводит, будто $_POST['answerArea'] пустая, даже если я что-то туда написал?
Выводит текст ТОЛЬКО в случае, если я его уже в коде прописал, например:
CODE (html):
скопировать код в буфер обмена
  1. <textarea name="answerArea" class="textareaForAnswer">123123123</textarea>

Тогда выводит, а если сам пишу, то нет. В чем может быть проблема?

Единственное, что я подозреваю, это из-за того, что имена текстовых полей одинаковые и код берет значение только последнего текстового поля. У меня их цикл рисует, т.е.надо у каждого текстового поля сделать разное имя? Но как тогда потом черезПОСТ к нему обращаться?
2. Sail - 08 Сентября, 2014 - 12:54:40 - перейти к сообщению
Webtest пишет:
т.е.надо у каждого текстового поля сделать разное имя? Но как тогда потом черезПОСТ к нему обращаться?

Да. Надо. Например сделать массивом.
CODE (html):
скопировать код в буфер обмена
  1. <textarea name="answerArea[]"

И тогда:
PHP:
скопировать код в буфер обмена
  1. if(isset($_POST['answerArea'])) {
  2.   foreach($_POST['answerArea'] as $key => $value) {
  3.     ...
  4.   }
  5. }
3. avtor.fox - 08 Сентября, 2014 - 12:59:14 - перейти к сообщению
Webtest пишет:
Единственное, что я подозреваю, это из-за того, что имена текстовых полей одинаковые и код берет значение только последнего текстового поля.

Совершенно верно.

Webtest пишет:
Но как тогда потом черезПОСТ к нему обращаться?

Вам нужно каждую форму (поля, где будут писать ответ) обвернуть в теги form. Вы можете в скрытом поле передавать ID формы, а в скрипте уже смотреть, от кого пришло и как обработать. В большинстве случаев происходит вот так:

CODE (html):
скопировать код в буфер обмена
  1. <form method="post">
  2.     <textarea name="fulltext"></textarea>
  3.     <input type="hidden" name="id" value="ID1" />
  4.     <input type="submit" />
  5. </form>
  6.  
  7. <form method="post">
  8.     <textarea name="fulltext"></textarea>
  9.     <input type="hidden" name="id" value="ID2" />
  10.     <input type="submit" />
  11. </form>
4. Webtest - 08 Сентября, 2014 - 13:26:32 - перейти к сообщению
Sail, avtor.fox спасибо, теперь все работает ОК!
Если интересно, я сделал так:
PHP:
скопировать код в буфер обмена
  1. name="answerArea[]"
  2. $answer = '';
  3. foreach($_POST['answerArea'] as $key => $value) {
  4.         $answer .= $value;
  5. }

 

Powered by ExBB FM 1.0 RC1