2011-11-17 5 views
0

У меня есть следующие данные, хранящиеся в поле «call_dtls» в таблице mysql. Эти данные сохраняются как TEXT тип данных. Данные передаются с помощью элемента управления <textarea> с PHP-страницы.Сохранение и отображение текста с надстрочным текстом

код для хранения данных в MySQL:

$mycalltext = mysql_real_escape_string($_POST['text']); 
// then storing $mycalltext in the table 

данные, которые получают хранятся в таблице (каждая строка хранятся в отдельной строке таблицы):

SANDY505™ (09-11-11 10:04:47): buy hinduniliver around 385-383 sl 380 trgt 390-393 
SANDY505™ (09-11-11 10:05:57): buy tatasteel around 472-468 sl 464 trgt 476-480 
SANDY505™ (09-11-11 10:06:09): buy nifty around 5295-5280 sl 5260 trgt 5320 

Когда другая страница позже получения фиды и отображает данные, заменитель ™ заменяется на , и все отображается как одна строка (разрывы строк игнорируются). Пример:

SANDY505� (09-11-11 10:04:47): buy hinduniliver around 385-383 sl 380 trgt 390-393 SANDY505� (09-11-11 10:05:57): buy tatasteel around 472-468 sl 464 trgt 476-480 SANDY505� (09-11-11 10:06:09): buy nifty around 5295-5280 sl 5260 trgt 5320 

Я хочу выход быть (включены разрывы строк):

SANDY505™ (09-11-11 10:04:47): buy hinduniliver around 385-383 sl 380 trgt 390-393 
SANDY505™ (09-11-11 10:05:57): buy tatasteel around 472-468 sl 464 trgt 476-480 
SANDY505™ (09-11-11 10:06:09): buy nifty around 5295-5280 sl 5260 trgt 5320 

кода, который производит выход:

$rs=mysql_query("Select * from mya_calls", $cn) or die("MySQL error: ".mysql_errno()); 
$number=mysql_num_rows($rs); 
while ($rsitem=mysql_fetch_object($rs)) 
    echo $rsitem->call_dtls; 
+2

Каков набор символов вашей базы данных/таблицы/соединения? Какова кодировка вашего HTML? –

+0

& utf8 – Sandy505

+0

Не используйте ['или die'] (http://www.phpfreaks.com/blog/or-die-must-die), если вы выводите HTML. Вы получите недопустимый HTML. – outis

ответ

1

перепроверить, что кодировка подключения базы данных и кодировка вашего выведенного HTML соответствует кодировке в вашей базе данных (возможно, UTF-8)

DB Connection:

mysql_query('SET CHARACTER SET utf8, NAMES utf8'); 

Выходные заголовки:

header('Content-type: text/html;charset=utf-8'); 

HTML:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
0

получил его ...... :-)

функция PHP nl2br() делает это для меня. решает обе проблемы .....

получил от этого и нашел прибегая к помощи раствора при this site

благодаря @outis для объяснения по поводу сообщения об ошибке.

+0

['
'] (http://brainstormsandraves.com/articles/semantics/structure/#br) обычно не является [семантическим] (http://webstyleguide.com/wsg3/5-site-structure/2- semantic-markup.html) и их редко следует использовать. Лучше было бы выбрать наиболее семантически подходящие элементы для структурирования данных, таких как абзацы или [списки] (http://www.w3.org/TR/html401/struct/lists.html). – outis

0

В общем, white-space в формате HTML рухнул. Исключения составляют в пределах <pre> элементов и элементов, для которых свойство CSS white-space является чем-то иным, чем «нормальным» (в частности, разрывы строк сохраняются только тогда, когда white-space является «pre», «pre-wrap» и «pre-line»).

Отображение содержимого на нескольких строках - проблема с презентацией; не используйте HTML для получения необходимого эффекта. Вместо этого выберите наиболее подходящие элементы для определения структуры данных. Например, образец выглядит неупорядоченным, и в этом случае будет <ul>.

try { 
    $result = $db->query("SELECT call_dtls FROM mya_calls"); 
    $result->setFetchMode(PDO::FETCH_CLASS, 'StdClass'); 
    ?> 
    <ul> 
     <?php foreach ($result as $item) { ?> 
     <li><?php echo $item->call_dtls; ?></li> 
     <?php } ?> 
    </ul> 
    <?php 
} catch (PDOException $exc) { 
    ... 
} 

После того, как вы это сделали, используйте CSS, чтобы установить стиль для элементов, если это необходимо.

Обратите внимание, что пример кода является примером использования семантических элементов в выводе HTML и не обязательно подходит для производственного кода.В разработке разные concerns следует разделить на разные модули.

+0

Смешивание SQL с HTML считается очень плохим дизайном. –

+0

@ Col.Shrapnel: да, но это лучше, чем у Сэнди. Кроме того, переключение в объяснение многоуровневой архитектуры, доступа к данным и слоев представления было бы слишком продолжительным и слишком сильным, чтобы поглотить сразу. Это скорее промежуточная тема, и (не судить) Сэнди, похоже, больше новичок. Наконец, пример кода предназначен как иллюстрация использования семантических элементов, а не кода, предназначенного для производственного сайта; Я добавлю пояснительную оговорку в этом последнем пункте. – outis