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
Форумы портала PHP.SU » » Вопросы новичков » Вопрос по Textarea

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

1. Hol1killer - 18 Июня, 2015 - 15:27:55 - перейти к сообщению
Здравствуйте, уверен поднимали тему не раз, но проблема для меня достаточно актуальна.

В базе данных есть определенные данные о номерах продукции которые связанны с товаром.

Есть определенный интерфейс в нем редактируется информация о продукции и в нем для этих номеров используется textarea. Мне нужно вывести в textarea в таком виде номера:

111
122
133
144

Что бы между номерами прям в textarea был перенос строки. Я перед выводом формирую переменную

$result = $result.$number."\n";

где $number изменяется в цикле и подставляет каждый новый номер.

А после вывожу: <textarea name="number" rows="5"><?php echo $result; ?></textarea>

и все равно получаю вывод через пробел ( пропускал переменную $result через функцию nl2br - но вижу тогда прям в textarea эти <br> ).

Понимаю, что вопрос ламерский но не могу понять где ошибаюсь и вообще поддерживает ли textarea форматирование или нужно копать в сторону JS
2. Sail - 18 Июня, 2015 - 15:52:19 - перейти к сообщению
Hol1killer попробуйте константу PHP_EOL использовать.
3. fanatikus - 18 Июня, 2015 - 19:05:35 - перейти к сообщению
CODE (html):
скопировать код в буфер обмена
  1. <textarea><?php  echo '111'.chr(13).'222'.chr(13).'333';?></textarea>
4. Dastor - 19 Июня, 2015 - 08:55:20 - перейти к сообщению
\r\n используй
(Добавление)
Sail пишет:
Hol1killer попробуйте константу PHP_EOL использовать.

Это кстати не прокатит.. Речь ведь о клиентской стороне.
Предположим, что сервер linux. Тогда в качестве PHP_EOL будет использоваться LF(т.е. \n). У пользователя винды (и мака кстати) опять же переносов строки в этом случае не будет. А вот у пользователя *никса будет Улыбка
5. Sail - 19 Июня, 2015 - 09:58:55 - перейти к сообщению
Dastor пишет:
Речь ведь о клиентской стороне.

Отнюдь Улыбка
(Добавление)
Hol1killer пишет:
и все равно получаю вывод через пробел

Может, на клиенте js отрабатывает и заменяет всё, что считает лишним на пробел?
6. Hol1killer - 19 Июня, 2015 - 11:04:19 - перейти к сообщению
Всем спасибо за ответы.

Sail пишет:
Hol1killer попробуйте константу PHP_EOL использовать.


Не помогает, разницы нету.

fanatikus пишет:
<textarea><?php  echo '111'.chr(13).'222'.chr(13).'333';?></textarea>


Этот способ тоже не работает..

Sail пишет:
Может, на клиенте js отрабатывает и заменяет всё, что считает лишним на пробел?


Уже тоже смотрю в это сторону изменить innerHTML, вопрос в том будут ли переносы строк при отправке на сервер, а то у меня эти номера разделяются через переносы строк....
7. Dastor - 19 Июня, 2015 - 11:35:10 - перейти к сообщению
\r\n не пробовали? или chr(13).chr(10)
8. Мелкий - 19 Июня, 2015 - 11:39:00 - перейти к сообщению
HTML4: http://www[dot]w3[dot]org/TR/html401/int[dot][dot][dot]s[dot]html#h-17[dot]13[dot]4
Для перевода строки используется CR LF (ака \r\n)

HTML5: http://www[dot]w3[dot]org/TR/html5/forms[dot][dot][dot]textarea-element
Необработанный пользовательский ввод может быть любой, по API браузер должен отдавать LF, в качестве отправляемого на сервер значения - вновь CR LF.

http://stackoverflow[dot]com/questio[dot][dot][dot]e-in-a-text-area

Dastor прав в обоих утверждениях:
PHP_EOL использовать для отдачи данных пользователю нельзя.
\r\n использовать нужно и соответствует как стандарту, так и сложившейся практике браузеров. Работать будет и не приводит к проблемам.
Так же, можно использовать HTML-сущности символов CR и LF: http://stackoverflow[dot]com/questio[dot][dot][dot]ine-in-text-area
9. Hol1killer - 19 Июня, 2015 - 12:25:42 - перейти к сообщению
[quote=Мелкий][/quote]
Dastor пишет:
\r\n не пробовали? или chr(13).chr(10)


Пробывал \r\n - отдачи нету.

chr(13).chr(10) - тоже самое.

Мелкий пишет:
HTML4: http://www[dot]w3[dot]org/TR/html401/int[dot][dot][dot]s[dot]html#h-17[dot]13[dot]4
Для перевода строки используется CR LF (ака \r\n)

HTML5: http://www[dot]w3[dot]org/TR/html5/forms[dot][dot][dot]textarea-element
Необработанный пользовательский ввод может быть любой, по API браузер должен отдавать LF, в качестве отправляемого на сервер значения - вновь CR LF.

http://stackoverflow[dot]com/questio[dot][dot][dot]e-in-a-text-area

Dastor прав в обоих утверждениях:
PHP_EOL использовать для отдачи данных пользователю нельзя.
\r\n использовать нужно и соответствует как стандарту, так и сложившейся практике браузеров. Работать будет и не приводит к проблемам.
Так же, можно использовать HTML-сущности символов CR и LF: http://stackoverflow[dot]com/questio[dot][dot][dot]ine-in-text-area


Согласен с вами, сам не понимаю почему не форматируется доктайп используется от HTML 5

Решение нашел в HTML сущностях, если писать HTML сущности то все работает, но почему тогда при форматировании:

$crossNumberNew = $crossNumberNew.$value.chr(13).chr(10); или
$crossNumberNew = $crossNumberNew.$value."\r\n";

а $crossNumberNew = $crossNumberNew.$value." "; - а вот такой вариант идеально раставляет переносы.

Спасибо и за это решение.

 

Powered by ExBB FM 1.0 RC1