2011-11-17 12 views
0

以下のデータは、mysqlテーブルの "call_dtls"フィールドに格納されています。このデータはTEXTデータ型として格納されます。データは、PHPで生成されたページの<textarea>コントロールを使用して送信されます。 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 

別のページ後でフェッチデータを表示すると、™はreplacedに置き換えられ、すべてが1行で表示されます(改行は無視されます)。例:

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が表示されます。 – outis

答えて

1

Doublecheckデータベース接続のエンコーディングことと出力されたHTMLのエンコーディングとデータベースのエンコーディング(おそらくUTF-8)が一致します

DB接続:

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 ()私のためにこれを行います。両方の問題を解決し.....

は感謝のエラーメッセージに関する説明について@outis this site

で解決策をグーグルで、見つかったからこれを得ました。

+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

一般に、HTMLのwhite-spaceは折りたたまれています。例外は、CSS white-spaceプロパティが "normal"以外のもの(特に、white-spaceが "pre"、 "pre-wrap"および "pre-line"の場合にのみ改行が保存される)の要素と要素内の<pre>要素内にあります。

複数の行にコンテンツを表示することはプレゼンテーションの問題です。あなたが望む影響を得るために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:はい、それはSandyが現在持っているよりも優れています。さらに、多層アーキテクチャ、データアクセス、およびプレゼンテーションレイヤの説明への転換は、あまりにも長くて、一度に吸収するにはあまりにも多くなります。それはもっと中間の話題であり、(判断しないために)Sandyは初心者のほうが多いようです。最後に、サンプルコードは、本番サイト向けのコードではなく意味要素を使用する例として意図されています。私はこの最後の点について説明的な免責事項を追加します。 – outis

関連する問題