2012-07-21 88 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)。

相关问题