2016-05-19 5 views
0

私はMySQLのテーブルにこのようなテキストを持っていると言うのmysql database.Let年代からデータを取得に問題があります。新しい行が

私はjQueryを使用して、データを自動的にcreatinig divにエコーします。

は、ここでは、コードです:

for(i = <?php echo $row; ?>; i > 0; i--){ 
    count = 1; 
    <?php 
     while($col = mysqli_fetch_assoc($result)) 
     { 
      $cols[] = $col; 
     } 
     foreach($cols as $col){ 
    ?> 
    $("#text"+count+"").text("<?php echo $col['post'] ?>"); 
    $("#username"+count+"").text("<?php echo $col['username'] ?>"); 
    count++; 
    <?php } ?> 
} 

私は新しい行を削除するか、文字列はstr_replace("\n", '<br />', $col['post']);のように置き換える使用して<br>に置き換えることを試みたが、それはうまくいきませんでした。私も他の多くのコードを試してきましたが、何も私のために働いていません提案

+2

私の目、あなたは何をしようとしていますか? – Hackerman

+3

'nl2br()'? http://php.net/manual/en/function.nl2br.php –

+0

また、表示するjQueryの 'text()'関数は、新しい要素をまったく作成しません。セレクタで指定された要素内のコンテンツを読み込みまたは設定します。そのスパゲッティコードは悪夢です。なぜあなたはすべてのあなたのDBコンテンツをjavascript配列またはオブジェクトリテラルに一度注入してから、そのデータ構造を使用して要素を作成してみてください。 –

答えて

1

あなたは、DBアクセスロジックとクライアントサイドのjavascriptものをsepratingする方がずっと良いでしょう。 nl2br()を使用して、改行を<br>に変換することもできます。だからこのようなものはうまくいくはずです。あなたのアプローチから

<?php 
    $rows = array(); 
    while($row = mysqli_fetch_assoc($result)) { 
     // replace new lines in post with HTML breaks 
     $row['post'] = nl2br($row['post']); 
     $rows[] = $row; 
    } 
?> 
<script> 
// create javascript literal by echoing out JSON serialization of $rows from PHP 
var dbRows = <?php echo json_encode($rows); ?>; 
// iterate through DB records and create elements 
$.each(dbRows, function(index, row) { 
    $('<div class="text">').text(row.post).appendTo('#someTargetElement'); 
    $('<div class="username">').text(row.username).appendTo('#someTargetElement'); 
}); 
</script> 

いくつかの変更が含まれます:

  • は、HTMLでの使用のために準備をDBから取得したデータにnl2br()を使用します。
  • PHPとjavascriptをよりよく分けることができます。これは実際にDBデータをjavascriptで利用できるようにして、throuhgout javasctiptを注入するのではなく、操作することによって行われます。
  • DOMに追加する新しいdiv要素を実際に作成しています。あなたのコードはこれをまったくやっていませんでした
  • ディッチング#text*アンチパターン。 IDラベルはどのような価値を付加しますか?通常、jQueryのようなライブラリを使用する場合、似ているすべてのアイテムに似たクラスが必要なので、クラスとして操作できます。
+0

ありがとうございます。私はそれをジェットしようとしなかったが、それは動作することを願っています。あなたはIDのために尋ねた...まあ、これはコード全体ではありません。私は単一の行を単一のdivにエコーしなければならないので、IDは使用されます。それはあまりにも大きいので私はここにすべてのコードを入れていない。それは実際にはDBに多くの行があるのでdivの前に追加されます。新しいdivには別の位置がなければならないので、私は '.prepend'にスタイルを追加しました。もし私がこのようなものを作りたいと言ったら、あなたはもっとよく分かるでしょう。http://ispovijesti.ba。これはBalcanのサイトで、私はこれを練習のためだけにやりたかった – user6332126

0

最初

ため

おかげTEXTAREAまたはpreタグ、\nに文字列を出力文字列に改行を行います場合。改行したくない場合は、\nを削除してください。

は別のHTMLタグに文字列を出力する場合、<br>はちょうど新しい行に移動を停止し、それを削除し、新しい行を行います。 PHPで

第三

、あなたはconstのPHP_EOLとの連結文字列で長い文字列に改行を持つことができます。例:jQueryの、$の.textセクションで"Hello" . PHP_EOL . "Wolrd"

())elmentのテキストノード(コンテンツ)、$の.htmlを(にエスケープされた文字列を置くには、文書化する(文字列として)生のHTMLを挿入します。

最後

一緒にJavascriptをあなたのPHPコードを入れないでください。