2017-04-09 3 views
1

私のプロジェクトでは、PHPを使用してデータベース(私の場合SELECT)をクエリし、whileループを使用して各行をフェッチし、それを使ってajaxにエコーバックします。PHPがjQueryに返すデータベース結果の数を数える方法はありますか?

私のPHPのように:私のHTMLで

$sql = "SELECT * FROM tasks A WHERE A.open = '1'"; 

$stmt = $pdo->prepare($sql); 

$stmt->execute(); 

while ($row = $stmt->fetch()){ 
    echo $row["orderDetails"]; 
} 

<script> 
    $(function(){ 
     $.ajax({ 
      method: "POST", 
      url: "getDetails.php", 
      success: function(backData){ 
       $("#details").html(backData); 
      } 
    }); 
<script> 

のは、私は、内部の、私のタスクテーブルtask.open = 1で開いたタスクのためのデータベースを照会しましょうこれらのタスクの詳細について私のajaxにエコーバックし、私のajaxはタスクの詳細についてdivのhtmlを変更します。

オープンタスクの数、つまりwhileループの数は、基本的にエコーの数です。この番号を取得する最善の方法は何ですか?ここでhtmlに表示されるタスクの数はいくつですか?

PS:whileループ内にwhileループカウンタを追加してこの数値を捕まえようとしましたが、この数値をdivの属性に追加してajaxにエコーバックしましたが、なぜこのエコー私の最後には起こりません。

ありがとうございました!

+0

私は考え方を見つけました。私はdivの数が自分のhtmlに含まれているかを数えます。 – Hang

+0

私は突然別の質問を思いつきました。 html()はjQueryで実際に選択された要素にコンテンツを追加するか完全に置き換えますか? – Hang

+0

['.html()'メソッドのドキュメント](http://api.jquery.com/html/)で説明したように、既存のコンテンツを置き換えます。 – nnnnnn

答えて

0

は、あなただけをチェックするlengthプロパティを使用することができ、適切なJSONレスポンスを返送されますそこにはいくつのアイテムがありますか?これを行うにはループは必要ありません。単にPDOのfetchAll methodを使用してください。単一の列だけを選択しているので、文字列の配列として取得できます。

<?php 
$sql = "SELECT orderDetails FROM tasks WHERE open=1"; 
$stmt = $pdo->prepare($sql); 
$stmt->execute(); 
$array = $stmt->fetchAll(PDO::FETCH_COLUMN, 0); 
header("Content-Type: application/json"); 
echo json_encode($array); 

は、今あなたがgetting its length含めて、それをあなたがやりたいことができ、文字列の配列を持っています。

<script> 
$(function(){ 
    $.ajax({ 
     method: "POST", 
     url: "getDetails.php", 
     success: function(backData) { 
      // now you can work with backData as an object 
      var count = backData.length; 
      $("#details").append("<div>You have " + count + " results.</div>"); 
      for (var i = 0; i < count; i++) { 
       $("#details").append("<div>" + backData[i] + "</div>" 
      } 
     } 
    }); 
}); 
<script> 

はまた、あなたがあなたのJavaScriptコードで閉じ})ペアを欠落していた注意してください。

+0

まあ!それは私の問題を解決するための非常に賢い方法です!私はまだそれほど実際にJSONに参加していませんが、本当にすぐにそれを学ばなければなりません!ありがとう! – Hang

0

私は、エコーにこのエイリアスにclass属性を含むdivを追加して、それを私のhtmlに戻して解決しました。jQueryを使ってその特定のクラスのdivを数え、その番号を取得しました。私はここからヒントを得る:count div elements with the same id JQUERY しかし、あなたは、このためのよりよい解決策を投稿することは非常に歓迎されている:あなたが何をしたいかD

関連する問題