2017-04-09 37 views
1

在我的項目中,我使用PHP來查詢數據庫(在本例中爲SELECT),並使用while循環來獲取每一行,並使用它來回顯到ajax。有沒有一種方法可以統計PHP發回jQuery的數據庫結果數量?

就像在我的PHP:

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

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

$stmt->execute(); 

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

在我的HTML:

<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中有多少div。 – Hang

+0

我突然想到另一個問題。 html()是jQuery實際上會將內容添加到所選元素還是完全替換它? – Hang

+0

正如[.html()'方法的文檔](http://api.jquery.com/html/)中所述,它取代了現有的內容。 – nnnnnn

回答

0

你想要做的就是發回一個適當的JSON響應什麼,那麼你可以使用length屬性檢查有多少物品。你不需要一個循環來做到這一點,只需使用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到echo來包含此訂單詳細信息,然後返回到我的html我用jQuery來計算具有該特定類的div並獲取數字。我從這裏得到暗示:count div elements with the same id JQUERY 但是非常歡迎您張貼這更好的解決辦法:d

相關問題