[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Перенос строки
m4a1fox
Доброго утра уважаемые эксперты, есть форма для комментария. Как в ней сделать перенос строки. Видел такую тему у twin'а но она на ооп. А хотелось бы на обычном php. Если что - фот форма -
<?php echo "<p class='comment'>Добавить:</p>";?>
<form method="post" action="comment_send.php" class="comment-form">
Имя:<br />
<
input type="text" name="name">
<
br />
<
br />
Тескт:<br />
<
textarea name="text" rows="5" cols="50"></textarea>
<
input type="hidden" name="id_mail" value="<?php echo $view?>">
<
input type="hidden" name="datetime" value="<?php $datetime = date("Y.m.d : H:i:s",time()); echo $datetime?>">
<
input type="hidden" name="date" value="<?php $date = date("Y.m.d"); echo $date?>">
<
input type="hidden" name="time" value="<?php $time = date ("H:i:s"); echo $time?>">
<
br />
Я не робот:<input name="ok" type="checkbox" value="1" />
<
br />
<
br />
<
input type="submit" name="submit" id="submit" value="Добавить">
</
form>
Спасибо.



Спустя 2 минуты, 1 секунда (27.12.2010 - 11:23) ZSH написал(а):
функция nl2br

Спустя 5 минут, 17 секунд (27.12.2010 - 11:28) m4a1fox написал(а):
ZSH
Про это я читаю сейчас. Если вы использовали, то может подскажите с чего начать?

Спустя 7 минут, 27 секунд (27.12.2010 - 11:36) m4a1fox написал(а):
И насколько понимаю, это надо писать в обработчике?! Так же!?

Спустя 4 минуты, 30 секунд (27.12.2010 - 11:40) totje написал(а):
сам задавался этим вопросом, кстати и случайно так нашел решение)
сейчас взял и прикрутил ее за пару сек на вывод из бд и все нормально работает

Спустя 2 минуты, 19 секунд (27.12.2010 - 11:43) m4a1fox написал(а):
totje
Ну так, мож это...... поделишься?

Спустя 2 минуты, 9 секунд (27.12.2010 - 11:45) ZSH написал(а):
а чем делится?

$text = nl2br($text);

echo $text;

Спустя 1 минута, 46 секунд (27.12.2010 - 11:46) sharki написал(а):
m4a1fox
Его используют при выводе данных например у тебя есть вывод комментариев
и сам коммент находится в пеерменной $comm, при выводе делай так
echo nl2br($comm);

Спустя 1 минута, 10 секунд (27.12.2010 - 11:48) totje написал(а):
m4a1fox
так я ведь сказал же, что на вывод ее тупо воткнул и все..
ну вот кусок кода:

$kaments = mysql_query("SELECT kament FROM kaments ");
while ($kamentrow = mysql_fetch_array($kaments)) {
$kament = nl2br( $kamentrow['kament']); // вставил ф-цию сюда и все
echo $kament ;

Спустя 2 минуты, 8 секунд (27.12.2010 - 11:50) m4a1fox написал(а):
ZSH
Не.... так просто она не работает..... Тут надо что то хитрее(

Спустя 2 минуты, 41 секунда (27.12.2010 - 11:52) m4a1fox написал(а):
Вот мой вывод
<!--Вывод списка коментариев-->

<?
$query = ("SELECT `name`, `date_now`, `time`, `text`
FROM `comment` WHERE `id_mail`="
.(int)$view."
ORDER BY datetime DESC LIMIT 10"
);
$id = mysql_query($query);
if(!$id) exit("Ошибка - ".mysql_error());
while($ind=mysql_fetch_array($id))
{
$text = nl2br($ind['text']);
echo '<div class="comment_div">
<div class="comment_add">
<img src="img/comment.png"> <u><b>'
.$ind['name'].'</b></u>
 | Дата: <b>'
.$ind['date_now'].'</b>
| Время: <b>'
.$ind['time'].'</b></div>
<div class="comment_text"><i>'
.$text.'</i></div></div>';
}
?>
- что по вашему - тут не так?

Спустя 4 минуты, 38 секунд (27.12.2010 - 11:57) m4a1fox написал(а):
Возвращает строку string, в которой перед каждым переводом строки вставлен '<br />' - то есть если при ввидении комментария, польхователь нажал ENTER то строка это воспринимает как <br /> а не как /n. Так что ли?

Спустя 15 секунд (27.12.2010 - 11:57) ZSH написал(а):
<div class="comment_text"><i>' . nl2br($text) . '</i></div>

Спустя 56 секунд (27.12.2010 - 11:58) sharki написал(а):
А что не так он тебе выводит? сам коммент при добавлении имел переносы строк?

Спустя 1 минута, 56 секунд (27.12.2010 - 12:00) m4a1fox написал(а):
Я скорее не так выразился.... Если допустим. какой то умелец хочет ввести оооооочень длинное слово, и только в строчку(ну прикиним что такие "Умельцы" существуют) - то скрипт каким-то образов должен переносить строку не портя при этом дизайна. Вот как-то так. Прошу в этом помощи. Спасибо...

Спустя 4 минуты, 52 секунды (27.12.2010 - 12:05) ZSH написал(а):
twin без ООР

кстати есть еще wordwrap но не работает в UTF

Спустя 6 минут, 9 секунд (27.12.2010 - 12:11) m4a1fox написал(а):
ZSH
Да...... я это и имел ввиду в первом посте. Но что-то у меня не хочет работать. Сейчас еще раз попробую, если что отпишусь. Но вчера не получилось. И еще. Я думал что function - это ооп. но видимо ошибался. Спасибо что разъяснили.

Спустя 1 минута, 6 секунд (27.12.2010 - 12:12) m4a1fox написал(а):
Теперь осталось разобраться, куда это впихнуть в моем коде.

Спустя 4 минуты, 58 секунд (27.12.2010 - 12:17) ZSH написал(а):
<!--Вывод списка коментариев-->

<?

/**
* Функция - аналог wordwrap() для кодировки UTF-8
*
@param string $str //обрабатываеемая строка
*
@param int $width //максимальная длина слова
*
@param string $break //разделитель
*
@return string
*/


function mBwordwrap($text, $width = 90, $break = "\n")
{
return preg_replace('#([^\s]{'. $width .'})#u', '$1'. $break , $text);
}

$query = ("SELECT `name`, `date_now`, `time`, `text`
FROM `comment` WHERE `id_mail`="
.(int)$view."
ORDER BY datetime DESC LIMIT 10"
);
$id = mysql_query($query);
if(!$id) exit("Ошибка - ".mysql_error());
while($ind=mysql_fetch_array($id))
{

echo '<div class="comment_div">
<div class="comment_add">
<img src="img/comment.png"> <u><b>'
.$ind['name'].'</b></u>
| Дата: <b>'
.$ind['date_now'].'</b>
| Время: <b>'
.$ind['time'].'</b></div>
<div class="comment_text"><i>'
. nl2br(mBwordwrap($ind['text'])) . '</i></div></div>';
}
?>


поправил

Спустя 29 минут, 40 секунд (27.12.2010 - 12:47) m4a1fox написал(а):
ZSH
Сделал как вы. Ну то есть скопипастил, а ему все равно. Одна огромная строка получается.

Спустя 1 минута, 43 секунды (27.12.2010 - 12:49) m4a1fox написал(а):
И параллельно вопрос чем этот код
    $result = mysql_query("INSERT INTO `comment` SET
`name` = '"
.mysql_real_escape_string($name)."',
`id_mail` = '"
.(int)$id_mail."',
`datetime` = '"
.mysql_real_escape_string($datetime)."',
`date` = '"
.mysql_real_escape_string($date)."',
`time` = '"
.mysql_real_escape_string($time)."',
`text` = '"
.mysql_real_escape_string($text)."'
"
);
хуже вот этого
    $result = mysql_query("INSERT INTO `comment` (name, id_mail, datetime, date_now, time, text)
VALUES ('
$name', '$id_mail', '$datetime', '$date',
'
$time', '$text')
- просто первый - не работает(((

Спустя 3 минуты, 28 секунд (27.12.2010 - 12:52) totje написал(а):
в первом запросе, наверное, правильным было бы использовать UPDATE, а не INSERT INTO.

Спустя 58 секунд (27.12.2010 - 12:53) sharki написал(а):
m4a1fox
Первый код обеззараживает данные перед заносом в БД, а второй просто заносит их.
А не работает т.к не правильные поля ты выделил а именно:
date_now- во втором а в первом у тебя уже другое `date`

Плюс тебе сказал totje что не правильные запросы

Спустя 6 минут, 52 секунды (27.12.2010 - 13:00) m4a1fox написал(а):
sharki
Да.... спасибо что поправили..... уже исправил. Так, остался первый вопрос - перенос. Этот, (цензура) перенос - не хочет работать как написал ZSH. Какие будут предложения.?

Спустя 6 минут, 51 секунда (27.12.2010 - 13:07) ZSH написал(а):
я там поправил, сравни

Спустя 2 минуты, 57 секунд (27.12.2010 - 13:10) m4a1fox написал(а):
ZSH
Фигня какая-то.... не работает. Может у меня с INSERT'ом в БД, что то не так....

Спустя 1 минута, 26 секунд (27.12.2010 - 13:11) ZSH написал(а):
еще раз поправил.

Спустя 6 минут, 28 секунд (27.12.2010 - 13:18) m4a1fox написал(а):
ZSH
Теперь текст не выводится...

Спустя 2 минуты, 56 секунд (27.12.2010 - 13:21) m4a1fox написал(а):
Причем в базе он есть, он просто не выводится)

Спустя 3 минуты, 43 секунды (27.12.2010 - 13:24) m4a1fox написал(а):
И что интересно, другие выводятся, может точно при INSERT'е что то не так? Что то мне кажется, там ошибка.

Спустя 1 минута, 52 секунды (27.12.2010 - 13:26) ZSH написал(а):
я только что проверил, у меня работает.

попробуй перед echo поставить $ind['text'] = 'оооооооооооооооооченьдлинноеслово';

если работает тогда проблема в другом

Спустя 2 минуты, 29 секунд (27.12.2010 - 13:29) m4a1fox написал(а):
ZSH
Ничего не выводит(

Спустя 1 минута, 18 секунд (27.12.2010 - 13:30) m4a1fox написал(а):
А если вот так
<?

/**
* Функция - аналог wordwrap() для кодировки UTF-8
*
@param string $str //обрабатываеемая строка
*
@param int $width //максимальная длина слова
*
@param string $break //разделитель
*
@return string
*/


function mBwordwrap($text, $width = 10, $break = "\n")
{
return preg_replace('#([^\s]{'. $width .'})#u', '$1'. $break , $text);
}

$query = ("SELECT `name`, `date`, `time`, `text`
FROM `comment` WHERE `id_mail`="
.(int)$view."
ORDER BY datetime DESC LIMIT 10"
);
$id = mysql_query($query);
if(!$id) exit("Ошибка - ".mysql_error());
while($ind=mysql_fetch_array($id))
{
$ind['text'] = 'оооооооооооjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj jjjооооооченьдлинноеслово';
echo '<div class="comment_div"><div class="comment_add"><img src="img/comment.png"> <u><b>'.$ind['name'].'</b></u> | Дата: <b>'.$ind['date'].'</b> | Время: <b>'.$ind['time'].'</b></div>
<div class="comment_text"><i>'
. mBwordwrap($ind['text']) . '</i></div></div>';

Спустя 2 минуты, 56 секунд (27.12.2010 - 13:33) m4a1fox написал(а):
function mBwordwrap($text, $width = 10, $break = "\n")
{
return preg_replace('#([^\s]{'. $width .'})#u', '$1'. $break , $text);
}
я так понял вот это вообще не работает?!

Спустя 1 минута, 46 секунд (27.12.2010 - 13:35) hellmin написал(а):
Интересно. Я думаю что это не в php дело, там грамотно разбить строку в автоматическом режиме будет сложно. Скорее всего тут лучше задать стиль для контейнера комментария типа такого...
<div class='comment' style='width: 300px; overflow: hidden;'>Атутпустьбудетоооооооченьдлинноеслововоднустроку</div>

Спустя 9 секунд (27.12.2010 - 13:35) ZSH написал(а):
работает
<div class="comment_text"><i>' . mBwordwrap($ind['text']) . '</i></div></div>';


<div class="comment_text"><i>' . nl2br(mBwordwrap($ind['text'])) . '</i></div></div>';

Спустя 1 минута, 16 секунд (27.12.2010 - 13:36) m4a1fox написал(а):
hellmin
Интересно предложение. Сейчас попробую.

Спустя 1 минута, 15 секунд (27.12.2010 - 13:37) m4a1fox написал(а):
Так что самое смешное, в БД строки есть. А на выводе - НЕТ! sad.gif

Спустя 4 минуты, 15 секунд (27.12.2010 - 13:42) m4a1fox написал(а):
hellmin
Спасибо, но нет. Дело и не в этом. Может это поможет - обработчик
if (isset($_POST['text'])) {
$text = $_POST ['text']; {$text = trim($text);} if ($text == '');} if (empty($text))
{
echo '
<table width="400" height="300" align="center">
<tr>
<td class="warning_table" width="220" align="center" valign="middle">

<img align="center" src="img/error.png">
<div align="center" class="warning_font_big?>ОШИБКА!!!</div>
<div align="center" class="warning_font" align="left">Ваше письмо не доставлено. Так как вы не заполнили поле <font color=red> ваш текст</font>!</div>
<p align="center"><a href="javascript:history.go(-1)"><font color=red>Вернуться назад</font></a></div></p>

</td>
</tr>
</table>'
;
exit;
}

{



$result = mysql_query("INSERT INTO `comment` SET
`name` = '"
.mysql_real_escape_string($name)."',
`id_mail` = '"
.(int)$id_mail."',
`datetime` = '"
.mysql_real_escape_string($datetime)."',
`date` = '"
.mysql_real_escape_string($date)."',
`time` = '"
.mysql_real_escape_string($time)."',
`text` = '"
.mysql_real_escape_string($text)."'
"
);

Спустя 9 минут, 48 секунд (27.12.2010 - 13:51) m4a1fox написал(а):
Ребят, а я нашел ошибку....))))))))) Блин, я ликую

Спустя 56 секунд (27.12.2010 - 13:52) m4a1fox написал(а):
Я же говорил в этой функции проблема - так и оказалось!)

Спустя 3 минуты, 20 секунд (27.12.2010 - 13:56) m4a1fox написал(а):
function mBwordwrap($text, $width = 10, $break = "\n")
{
return preg_replace('#([^\s]{'. $width .'})#u', '$1'. $break , $text);
} - для чего необходима буква U - если ее убрать - вуаля - все работает!

Спустя 35 секунд (27.12.2010 - 13:56) ZSH написал(а):
поставь в начале скрипта

error_reporting(E_ALL);

и посмотри что выдаст

Спустя 2 минуты, 50 секунд (27.12.2010 - 13:59) m4a1fox написал(а):
ZSH
Ничего не выдает. А зачем там буква U?

Спустя 2 минуты, 20 секунд (27.12.2010 - 14:01) ZSH написал(а):
если у тебя кодировка не UTF то можно использовать функцию wordwrap

Спустя 3 минуты, 11 секунд (27.12.2010 - 14:05) m4a1fox написал(а):
ZSH
Кодировка не UTF-8, а Windows -1251. Но тем не менее спасибо всем.

Спустя (27.12.2010 - 14:05) ZSH написал(а):
модификаторы

обрабатывается как UTF8 строки

Спустя 3 минуты, 28 секунд (27.12.2010 - 14:08) ZSH написал(а):
<!--Вывод списка коментариев-->

<?
$query = ("SELECT `name`, `date_now`, `time`, `text`
FROM `comment` WHERE `id_mail`="
.(int)$view."
ORDER BY datetime DESC LIMIT 10"
);
$id = mysql_query($query);
if(!$id) exit("Ошибка - ".mysql_error());
while($ind=mysql_fetch_array($id))
{

echo '<div class="comment_div">
<div class="comment_add">
<img src="img/comment.png"> <u><b>'
.$ind['name'].'</b></u>
| Дата: <b>'
.$ind['date_now'].'</b>
| Время: <b>'
.$ind['time'].'</b></div>
<div class="comment_text"><i>'
. nl2br(wordwrap($text), 20, "\n") . '</i></div></div>';
}
?>

Спустя 6 минут, 36 секунд (27.12.2010 - 14:15) m4a1fox написал(а):
ZSH
Но ведь вы не определяете $text. У меня же идет $ind[text]. Как тут быть?

Спустя 3 минуты, 49 секунд (27.12.2010 - 14:18) ZSH написал(а):
ну поставь $ind[text], $text я по привычке влупил

Спустя 22 минуты, 38 секунд (27.12.2010 - 14:41) m4a1fox написал(а):
ZSH
Понимаю - так и ставлю - вылетает ошибка.
Warning: nl2br() expects at most 2 parameters, 3 given in Y:\home\localhost\www\qwerty\page_view_you_mail.php on line 135

Спустя 4 минуты, 42 секунды (27.12.2010 - 14:46) ZSH написал(а):
nl2br(wordwrap($text, 20, "\n"))

блин скобки не так рассставил, вот что значит сразу двумя делами заниматся smile.gif

Спустя 6 минут, 44 секунды (27.12.2010 - 14:53) m4a1fox написал(а):
ZSH
Мдя..... а так не получается, - строка лезет вправо.))))))

Спустя 15 минут, 39 секунд (27.12.2010 - 15:08) ZSH написал(а):
nl2br(wordwrap($text, 20, "\n", 1))

Спустя 3 минуты, 15 секунд (27.12.2010 - 15:11) m4a1fox написал(а):
Да - так работает. Спасибо. Это значит, нет смысла использовать функцию переноса если использую Win-1251?

Спустя 2 часа, 57 минут, 25 секунд (27.12.2010 - 18:09) inpost написал(а):
m4a1fox
Всё как и раньше, только при выводе из БД пишешь: echo nl2br($text); В других местах - не надо! А так же не стоит создавать переменные, которые будешь просто выводить.
echo date(), - а не $date = date(), echo date - экономия памяти.

Спустя 24 минуты, 42 секунды (27.12.2010 - 18:34) m4a1fox написал(а):
inpost
Точно, я об этом не подумал. Спасибо.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.