2012-09-04 20 views
0

基本上我有一個foreach循環從數據庫中的產品數組中包含價格等數據。首先通過一個簡單的mySQL SELECT查詢拉下數據。然後將其存儲在關聯數組中。刷新DIV與來自同一頁的數據

我想統計在頁面上顯示的項目數量。我知道如何計算數組中的項目,但是我將過濾通過urls顯示在頁面上的哪些項目,並且只想計算實際顯示的數量。

我的想法是每次foreach循環運行時只有一個變量和+ 1,但麻煩是我需要在循環運行前回顯數字。

這裏是我的循環:

<h2>Title</h2><h5><? echo $numberofproducts; ?> products</h5> 
    <? 
    $numberofproducts == 0; 
    foreach(get_products() as $product){ 
    $numberofproducts++; 
    // display product info 
    ?> 

有沒有辦法循環完成通過AJAX運行後更新H5標籤?不需要另一個包含一行的php文件?

+0

你能詳細說明爲什麼你不能在'h5'之前訪問'get_products()'嗎? – Phil

+0

我可以,但如果我在數組中的所有內容進行過濾之前不會返回數據庫中的項目數量? – Mike

回答

0

只要是這樣的:

<?php $products = get_products(); ?> 

<h2>Title</h2><h5><?php echo count($products); ?> products</h5> 
<?php 

    foreach($products as $index => $product){ 

     //you may use $index as the progressive loop counter 

    } 

?> 
+0

感謝您的支持,它可以正常工作,但是如果我有一個if語句取決於url中的內容,例如products.php?cat = 3,所以如果有任何產品的「cat」等於3,循環纔會運行。不會這樣計算數組中不等於3的項。 – Mike

+0

@MikeZange很好地向你傳遞'$ cat'參數'get_products()'函數來過濾結果。 – moonwave99

+0

謝謝你會試試:) – Mike

0

也許這樣

echo "<script type='text/javascript'>$('#div_id').find('h5').html(".$numberofproducts.");</script>"; 
+0

不能得到這個工作,因爲某些原因代碼看起來很健全,只是wouldnt找到

:S – Mike

+0

'#div_id'應該是您正在處理的div的id。 – moonwave99

+0

是的,#div_id必須是您使用的div的ID。此外,請嘗試將

更改爲h5 – Pluda

0

你也可以只運行循環兩次:

<h2>Title</h2> 
<?php 
    $numberofproducts = 0; 
    $products = get_products(); 
    foreach($products as $product){ 
    ++$numberofproducts; 
    } 
?> 
<h5><?php echo $numberofproducts; ?> products</h5> 
<?php 
    foreach($products as $product){ 
    // display product info 
    } 
?> 

我假定集合是相當小的,否則你不會先取得它們全部,然後在for循環中過濾。此外,如果您使用javascript動態更改頁面內容/列表,請在執行過濾之後鉤住列表中(可見)元素的數量,然後更新h5中的數字。