2012-07-21 36 views
0

我在做個人網站。 我被困在博客上。我擁有它,因此每頁顯示5個,並且在我的MySQL表中沒有中斷ID的情況下很好。
但是,我有能力刪除博客,並且將所有東西都弄亂了,因爲我的循環包含缺少的ID,並且什麼也沒有顯示,所以每頁只有3個或4個。 enter image description here如果不存在,則跳過行。 MySQL/PHP

(使用id = 10的博客已被刪除)

我不會顯示所有的代碼,但這裏的一些。

$i = $blog_count-(($currentpage*$maxperpage)-$maxperpage); 
while ($i >$blog_count-(($currentpage*$maxperpage)-$maxperpage)-$maxperpage){ 
//render the blogs 
$i--; 
} 

$是BLOG_COUNT等於多少行是在表中。 我有另一個變數,我搞亂了,這是$ maxid。這只是最大的身份證號碼。

任何幫助,將不勝感激。我有一種感覺,我應該知道如何做到這一點,但我很難過。

編輯:我改變了我的代碼

$start = $currentpage*$maxperpage-$maxperpage; 
$query = "SELECT * FROM blogs ORDER BY id DESC LIMIT $start,$maxperpage"; 
$result=mysql_query($query) or die(mysql_error()); 
while ($blog = mysql_fetch_array($result)) 

和它的作品。多謝你們。

+0

什麼是您的SQL查詢來檢索當前的博客文章?您在PHP中所做的工作(也是跳過無用行的工作)當然可以在您的SQL查詢中完成 – jolivier 2012-07-21 22:58:14

+0

您知道MySQL中的「limit」子句嗎? – codingbiz 2012-07-21 22:58:39

+0

你發佈的代碼看起來好像過度殺毒! :s – craig1231 2012-07-21 23:05:57

回答

0

好了兩件事情,我建議......

使用MySQL的限制條款,這將限制返回結果的數量。

SELECT * FROM `table1` LIMIT 10; 

或使用另一場像deleted,以確定是否該行被「刪除」,這樣ITLL仍然在數據庫中,但不活躍。

1

你的問題似乎是你沒有正確使用你的數據庫。

您應該讓數據庫根據您的需要返回過濾和排序的行集合。在典型的博客場景中(文章可能不活躍/尚未公開),您可以要求數據庫返回按日期排序的活動文章集合。閱讀基本的SQL,併爲自己做一個忙,並使用一個體面的ORM(一個數據庫抽象層使查詢容易,將您與原始SQL隔離)。如上所述,如果你想分頁,你可以使用LIMIT來獲得行的子集。

+0

我在考慮按日期排序,但我只是認爲按ID排序會更容易,或相同。謝謝(你的)信息 – 2012-07-21 23:19:02

0

正如別人所說,你不應該依賴博客文章的任意id字段。從數據庫中按照排序順序提取帖子,然後在循環中輸出它們。下面是一些示例代碼,以幫助您開始:

$results = $connection->query("SELECT * FROM Posts LIMIT 5, 5 ORDER BY id DESC"); 
while ($row = $result->fetch_assoc()) 
{ 
//Pull data from the row and display it 
} 

所以,這個代碼將拉動6日至10職位從數據庫中,不管是什麼職位已被刪除。 LIMIT的第一個參數是要跳過的行數(所以,第一頁爲0,第二頁爲5,等等),第二個參數是結果的最大數量(您希望它始終爲5)。

相關問題