2012-01-23 14 views
1

私はテキストエリアを持つフォームを持っています。フォームが送信されると、Datamapperはデータをデータベースに入力します。DB内の改行を保存してZend Frameworkで表示する方法

私の質問今、どのように私はすべての改行をデータベースに保存するのですか?私の見解で は、私はエスケープ()フィルタします。このうちはそれではないだろうと思い

$this->escape($entry->description)' 

でしょうか? だから私は、私はそれを保存することになっているのか分からないが、何も変わっていないので、ラインを持ついくつかのテキストは、データベースに直接壊すコピーした

以下
echo nl2br($entry->description) 

を使用してみました。

  1. データベースに保存するにはどうすればよいですか?私は$ table-> insert($ data)を使用します。
  2. 私のビューに改行を含むテキストを表示するにはどうすればよいですか?

解決策が見つからないため、誰かが助けてくれることを願っています。どうもありがとうございました。私は私の文字列は、複数のラインが所定の位置にまだ壊れてプリントアウトしていたビューで

$db = Zend_Db_Table::getDefaultAdapter(); 
$db->insert('testing', array('description' => "This is a test\nwith multiple\nlines in the db\n\nmore stuff")); 

$select = $db->select()->from('testing'); 
$results = $select->query(); 
$row  = $results->fetch(); 

$this->view->description = $row['description']; 

// in the view: 

echo nl2br($this->description); 

答えて

1

以下は、何の問題もなく私のためにうまく働きました。

エスケープは、デフォルトではhtmlspecialchars()のみを呼び出します。これは改行には影響しません。しかし、nl2brを呼び出す必要があります。これは、改行によって文字列がWebページの複数の行にまたがることはないため、nl2brを使用する理由です。

DBに改行を含むデータを手作業で挿入しても、テーブルからデータを選択したときに改行を取得できません。

+0

ありがとうございます。私はあなたのテキストを私のDBにコピーしましたが、\ nでそれをまっすぐに印刷して、改行は表示されません。 – Luka

+0

DBで '\ n'を見ることができれば、それは改行ではなくリテラル' \ 'と' n'で挿入されました。 PHPの '\ n'は改行文字に変換されます。なぜならそれが挿入文字と一緒に動作するからです。 – drew010

+0

そのコードをテストコントローラにコピーして表示するだけの場合は、改行が表示されますか?テーブルに挿入するために必要な最小限のデータを格納するように挿入を調整する必要があります。 – drew010

関連する問題