2012-08-25 33 views
0

如何限制顯示結果?我需要限制它100個視圖。只顯示100行PHP

在DB我:

ID|NAME|PAGE|COUNT|DATE 

在計數我要計數,直到100,然後停止表示ID。我可以通過計數< 100.然後更新具體的ID。我可以獲得少於100個視圖的記錄,但我無法設法更新特定ID的計數。

行是表明與:

PHP代碼:

foreach($bannerGroups[0] as $ban) { 
     echo '<li class="right1">'.$ban->html().'</li>';  
} 

但我就是不知道放在哪裏更新在那裏。我試過了,但我得到的只是更新一個ID。但它在一個頁面上顯示4,並在刷新時將它們隨機化。所以我不知道該怎麼做。

另外我想說我只學習php。對不起所有的混亂。在http://pastebin.com/A9hJTPLE

回答

2

如果我理解正確,您想要顯示先前顯示的所有橫幅少於100次?

如果這是正確的,你可以添加到您的WHERE條款:

$bannerResult = mysql_query("SELECT * FROM table WHERE page='cat' WHERE `COUNT` < 100"); 

要更新所有這些,您可以運行一個查詢同時顯示每個人的旗幟,或「記錄」每個id並在結束時運行一個查詢,如:

$ids = array(); 
foreach($bannerGroups[0] as $ban) { 
    $ids[] = $ban['ID']; // record the ID; don't know how Banner 
         // class works, assuming uses indexes; maybe ID() method? 
    echo '<li class="right1">'.$ban->html().'</li>'; 
} 
... 
mysql_query('UPDATE table SET `COUNT` = `COUNT` + 1 WHERE ID IN (' . join(',', $ids) . ')'); 

UPDATE
基於關閉評論的,你Banner類沒有檢索單個橫幅的方法ID。在這種情況下,你可以當你建立你的橫幅陣列記錄ID值:

$ids = array(); 
while($row=mysql_fetch_assoc($bannerResult)) { 
    $banners[] = new Banner($row); 
    $ids[] = $row['ID']; // record the ID 
} 
// update the `count` on each record: 
mysql_query('UPDATE table SET `COUNT` = `COUNT` + 1 WHERE ID IN (' . join(',', $ids) . ')'); 
+0

這就是有趣的你總犯同樣的錯誤,因爲我的2倍'WHERE' – Peter

+0

我用你的方法,但我得到這個錯誤。預期;你的'$ ban'變量來自$ bannerGroups,它來自'$ banners' - 它的類型是'Banner';我不知道你的班級是如何工作的,但我認爲你可以獲得每個單獨標題的'ID'值。也許你在Banner中有一個名爲'ID()'或者'getValue('ID')的函數? – mypoint

+0

@ user1531524呀不能使用類型爲旗幟的對象作爲數組另我沒把更新: – newfurniturey

-1

嘗試

代碼限制你的數據源100個項目。
這就像在MySQL/PostgreSQL查詢中的OFFSET x LIMIT 100或在MSSQL中的TOP 100

+0

這不是他問 – Peter

0
$bannerResult = mysql_query("SELECT * FROM table WHERE page='cat' AND `count`<100"); 
1

對不起,但我得到了你的問題錯了......

首先你要對每一個念想「觀看次數」新的SQL列插入到數據庫... ,你必須增加viewcount中的值...

對於該行爲(因爲mysql不允許在同一個表上的update-clause上進行子選擇),所以您必須從db中獲取結果,並且像這樣做,並且將記錄的所有主鍵傳遞給數組... 在視圖邏輯之後,您必須啓動一個查詢,如:

UPDATE foo SET viewcount = viewcount + 1 WHERE id IN (1,2,3,4,5,6...,100); 

其中IN子句可以很容易地用你的主鍵數組和「implode(',',$ arr);」

希望這有助於。

+0

啊我忘了...你最初的選擇查詢應包含觀看次數,道具,太... 「SELECT * FROM表WHERE頁=‘貓’和觀看次數<100」爲彼得Szymkowski指出。這是 - 前最後兩個{ – TheHe

0

@newfurniturey想通了。在每個foreach($banneruGroups added: $ids = $ban->getValue('id');然後mysql_query("UPDATE dataa SET COUNT = COUNT + 1 WHERE id = '$ids'");但有什麼辦法通過增加查詢一次更新嗎?如果ID已經顯示100次,我得到Warning: Invalid argument supplied for foreach() in.任何想法如何解決它?我在DB中有4個ID。如果其中一個已經有100個視圖(計數),那麼我會得到錯誤!

+0

找到答案:只好添加(array)foreach((array)... – mypoint