2011-01-09 18 views
0

HI、データベースにユーザーのコメント形式を保存する

コメントフォームにユーザーをコメントとして作成し、MYSQLデータベースに保存します。私が直面している問題は、データベースに1行として格納されているということです。これは、フォームにユーザーがどのように入力されるかを正確な形式で保存する必要があります(改行など)。私はPHPを使用してMySQLデータベースに格納しています。

+0

データベースのフィールドタイプとは何ですか?どのようにあなたはそれをデータベースにプッシュしていますか?ある種のマークアップのように、プレーンテキストのコンテンツはリッチテキストですか?等である。 –

答えて

4

最初にテキストまたは長いテキストとして保存します。次にコメントを表示するには、nl2brのような関数を使って改行をhtmlの<br>要素に変換します。このように、改行は保存されます。

+0

私は次の質問に答えます - コメントがデータベースに保存されたら、彼は将来どのようなフォーマットを使用したいのですか? HTMLの場合は
を貼り付けてもOKです。 もう1つのこと - クリシュナは(新しいラインとすべての)言及しました。私は "すべて"が何であるのだろうか? – diagonalbatman

0

あなたは同じ形式でコメントをmysqlデータベースに保存することができます。 1つの違いは、あなたのコードが\ r \ nを探して、それを解釈する新しい行を持つコメントを取得するときです。また、mysqlにデータを挿入すると、コメントから 'と\文字をエスケープする必要があります。

1

あなたのテキストは、ユーザー入力の改行を含めて十分に長いテキストタイプのフィールド(例:TEXT)に入れると、データベースに正しく保存されます。

あなたの問題はどのようにディスプレイ表示するユーザーがそれを入力したときに見ていたフォーマットのテキストです。これはより一般的な問題であり、HTMLが空白をどのように扱うかとだけ関連しています。

1つのアプローチは、コメントにnl2brを呼び出すことです。これは、レンダリングされた出力に目に見える影響を与える<br>タグですべての改行(ブラウザが無視する)を置き換えます。

もう1つの方法は、テキストを<pre>...</pre>タグの内側に置くことです。これにより、ブラウザはホワイトスペースを保持したままレンダリングします。

これは本当に便利な/あなたに適したものです。

更新:だけ明確にする:んない(それは例えば入力からHTMLタグをストリッピングのように、あなたの入力検証の一部でない限り)データベースに挿入する前に、ユーザーの入力を変更します。それを "手の届かない"形式で保存し、の出力のデータを処理する前に処理を行ってください。こうすることで、出力チャンネルが将来変更された場合(たとえば、コメントをテキストファイルにエクスポートしてHTMLとして表示するなど)、正しい処理を行うことができます。

+0

しかし、私はデータベースにコメントを格納しているときに、改行やその他の文字をユーザーが入力しても格納していません。なぜそれが削除されたのか分からないのですか? – Krishna

+0

@Krishna:これらの文字は、処理の他の部分では削除されないことを確かめてください。それはそれのように聞こえる... – Jon

関連する問題