[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вывод отформатированного текста в таблицу
kksw
Здравствуйте, прошу помощи.
В базе храниться текст (тип поля text) нужно вывести его в таблицу в том же виде в каком он находиться в БД, т.е. с пробелами, переносами, отступамии т.д.
<pre> не подходит.
возможно функцией nl2br() можно, проблема в том, что в данном случае не могу правильно ее применить...

вот код:

$table = "<table width='820' border=0 align='center'>\n";
while ($row = mysql_fetch_assoc($res))
{
{

$table .= "<tr>\n";
$table .= "<td span colspan='3' style='font-weight: bold; color: #FFF;' >".$row[vid]."</td>\n";
$table .= "</tr>\n";
$table .= "<tr>\n";
$table .= "<td width='608' height='18'span style='font-weight: bold; color: #FFF;' >".$row[data]."</td>\n";
$table .= "<td width='93'>".$row[tim]."</td>\n";
$table .= "<td width='105'>".$row[result]."</td>\n";
$table .= "</tr>\n";
$table .= "<tr>\n";
$table .= "<td height='18' colspan='3' style='font-size: 12px; color: #999;'>".$row[text]."</td>\n";
$table .= "<tr>\n";
$table .= "<td height='18' colspan='3'></td>\n";
$table .= "</tr>\n";
$table .= "</tr>\n";
}
}

$table .= "</table>\n";
echo $table;

В этом месте ".$row[text]." нужно вывести "правильный, красивый" текст из БД, а сейчас он выводиться все в кучу.
Подскажите, как это правильно сделать.



Спустя 53 минуты, 9 секунд (11.05.2012 - 09:59) NitroGenerate написал(а):
function replace ($string)
{
$string = preg_replace("/\n/m", "<br>", $string);
$string = str_replace(' ', '7nbsp;', $string); // тут замените 7 на &, а то форум вместо текста отображает просто пробел
return $string;
}
.....
...
....
....

$table .= "<td height='18' colspan='3' style='font-size: 12px; color: #999;'>".replace($row[text])."</td>\n";

Думаю, этого хватит...

Спустя 1 час, 9 минут, 29 секунд (11.05.2012 - 11:08) killer8080 написал(а):
Цитата (kksw @ 11.05.2012 - 08:06)
В базе храниться текст (тип поля text) нужно вывести его в таблицу в том же виде в каком он находиться в БД, т.е. с пробелами, переносами, отступамии т.д.
<pre> не подходит

Интересно почему? blink.gif

Спустя 38 минут, 8 секунд (11.05.2012 - 11:46) sergeiss написал(а):
Еще вариант - вывести этот текст внутри тэга textarea. Можно запретить редактирование текста и поменять его вид, с помощью CSS. Чтобы смотрелось так, как удобно.

И мне тоже не понятно, почему тэг <pre> у тебя не работает? Код показывай, только в разумном количестве. Ту строку (или строки), где тэг <pre> используется.

И еще, очень важно!!! Вот этот символ \n, который ты везде выводишь - убери! Он тут не нужен совсем.

PS. Да, и еще пару слов. Когда пишешь ключи массива, то их лучше заключать в кавычки: $row['data'], $row['text']. Без кавычек тоже будет работать, но только до тех пор, пока у тебя не окажется констант с именем, совпадающим с символьной строкой. Вот тут-то и начнется "веселье" smile.gif Будешь очень долго искать ошибку.
Лучше сразу "привить" привычку писать правильно, чтобы не раскидывать самому себе грабли.

Спустя 4 минуты, 7 секунд (11.05.2012 - 11:51) Игорь_Vasinsky написал(а):
Цитата
И еще, очень важно!!! Вот этот символ \n, который ты везде выводишь - убери! Он тут не нужен совсем.

да он чтоб в HTML виде всё элегантно смотрелось)))

Спустя 6 минут, 14 секунд (11.05.2012 - 11:57) sergeiss написал(а):
Цитата (Игорь_Vasinsky @ 11.05.2012 - 11:51)
да он чтоб в HTML виде всё элегантно смотрелось)))

Игорь, вот ты, вроде бы, адекватный человек. Но я не понимаю - сколько раз тебе надо "намекнуть", чтобы ты не флудил в тематических разделах? Это - прямое нарушение п.2.2 Правил Форума. Согласно п.5.1 Правил предупреждаю: если еще такое повторится, то буду применять п.5.2.с тех же Правил. Безо всяких дополнительных предупреждений. ОК? smile.gif

Спустя 5 минут, 26 секунд (11.05.2012 - 12:02) Игорь_Vasinsky написал(а):
так я тебя поправил biggrin.gif человек хочет блеснуть елегантностью своего HTML в исходнике, ты его отговариваешь что ему это не нужно, я тебе объясняю - что это к его проблеме ни какого отношения не имеет, это только для эстетики. в чём флуд то?

Спустя 6 минут, 7 секунд (11.05.2012 - 12:08) sergeiss написал(а):
Флуд в том, что '\n' тут вообще никак не работает, никакой эстетики не добавляет. А ты только стёб устроил. Так что ты не меня поправил, а решил "блеснуть знаниями", т.е. просто пофлудить. Так понятнее? И вообще. Я вчера в другой теме молча "убил" несколько твоих сообщений, в СМС написал - ты должен был прочитать, т.к. там писал в то же время. Сегодня опять продолжаешь. И, вроде бы, серьезный человек...

Короче говоря. Закрываем флуд в этой теме. Если очень хочется - иди в правильный раздел и там пиши всё, что хочешь. В разумных пределах smile.gif

Спустя 24 минуты, 19 секунд (11.05.2012 - 12:33) kksw написал(а):
function replace () отлично, работает, NitroGenerate большое спасибо

А ведь кавычки изначально поставил, потом убрал, посчитал ненужными, и так работает, спасибо буду знать.
Символ \n, ставил уж точно не что бы блестнуть smile.gif пока до этого еще далеко...
а вот здесь вот \n - нужен ? и какая разница ? http://phpforum.ru/index.php?showtopic=21916

<pre> работает, но ведь он выводит текст дурацким шрифтом, или можно потом его с помощью CSS поправить и еще в первой строке постоянно делает отступ.
читал где то на этом форуме кажется, как критиковали одного чел. за то что он использовал <pre> вместо nl2br()

Спустя 1 час, 46 минут, 51 секунда (11.05.2012 - 14:19) killer8080 написал(а):
Цитата (kksw @ 11.05.2012 - 11:33)
<pre> работает, но ведь он выводит текст дурацким шрифтом, или можно потом его с помощью CSS поправить и еще в первой строке постоянно делает отступ.

<pre style="font-family: Arial, 'Times New Roman', Georgia;">

</pre>

Спустя 1 час, 58 минут, 13 секунд (11.05.2012 - 16:18) Kuliev написал(а):
kksw
\n - это перенос строки. Перенос который не видит пользователь и этот перенос не влияет на эстетику выводимого содержимого сайта.

В большей части случаев он нужен для форматирования HTML кода т.е.
Чтобы PHP Вам не сгенерил HTML в одну строчку а то Вы замучаетесь потом анализировать что откуда у Вас растет.

Пример без N:


<table><tr><td></td></tr></table>


Пример с N:


<table>
<tr>
<td></td>
</tr>
</table>



Спустя 3 минуты, 54 секунды (11.05.2012 - 16:22) Игорь_Vasinsky написал(а):
Цитата
человек хочет блеснуть елегантностью своего HTML в исходнике,

я об этом и говорил. флуддером обозвали.

Спустя 3 часа, 14 минут, 10 секунд (11.05.2012 - 19:36) kksw написал(а):
Kuliev спасибо за разьяснение !

Игорь_Vasinsky да какой там блеснуть, мне бы хоть код рабочий написать, учусь по примерам и т.д. с миру по нитке...

Спустя 6 минут, 45 секунд (11.05.2012 - 19:42) Kuliev написал(а):
kksw


$table = "<table width='820' border=0 align='center'>\n";
while ($row = mysql_fetch_assoc($res))
{
{

$table .= "<tr>\n";
$table .= "<td span colspan='3' style='font-weight: bold; color: #FFF;' >".$row['vid']."</td>\n";
$table .= "</tr>\n";
$table .= "<tr>\n";
$table .= "<td width='608' height='18'span style='font-weight: bold; color: #FFF;' >".$row['data']."</td>\n";
$table .= "<td width='93'>".$row['tim']."</td>\n";
$table .= "<td width='105'>".$row['result']."</td>\n";
$table .= "</tr>\n";
$table .= "<tr>\n";
$table .= "<td height='18' colspan='3' style='font-size: 12px; color: #999;'>".nl2br(htmlspecialchars($row['text']))."</td>\n";
$table .= "<tr>\n";
$table .= "<td height='18' colspan='3'></td>\n";
$table .= "</tr>\n";
$table .= "</tr>\n";
}
}

$table .= "</table>\n";
echo $table;


Попробуй так...

Спустя 15 минут, 20 секунд (11.05.2012 - 19:58) kksw написал(а):
Цитата (Kuliev @ 11.05.2012 - 20:42)
kksw
Попробуй так...


нет, так что то выводит техт не отформатированный.

Спустя 16 минут, 50 секунд (11.05.2012 - 20:15) killer8080 написал(а):
Цитата (kksw @ 11.05.2012 - 18:58)
нет, так что то выводит техт не отформатированный.

ну так используй <pre>, именно для этих целей он и предназначен, а моноширинный шрифт элементарно меняется стилями. Кстати в цикле while не нужны 2-е пары фигурных скобок
while(...){
...
}

Спустя 15 минут, 38 секунд (11.05.2012 - 20:30) kksw написал(а):
Цитата (killer8080 @ 11.05.2012 - 21:15)
Цитата (kksw @ 11.05.2012 - 18:58)
нет, так что то выводит техт не отформатированный.

ну так используй <pre>, именно для этих целей он и предназначен, а моноширинный шрифт элементарно меняется стилями. Кстати в цикле while не нужны 2-е пары фигурных скобок
while(...){
...
}

Да, все уже разобрался, и пре и функция предложенная выше работают !
спасибо
Быстрый ответ:

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