从mysql查询中创建多个页面

时间:2011-02-26 15:56:40

标签: php mysql

所以,我拥有这个数据库,有一些名为'id','title'和'message'的字段。现在我在数据库中得到了700条消息。所以我想做的就是设置每页最多50个消息标题的限制,并制作多个页面......我该怎么做?

我只知道使用LIMIT ...

获取第一页

2 个答案:

答案 0 :(得分:9)

正如您猜测的那样,您必须使用LIMIT keyword

它接受两个值(引用)

  • 要返回的第一行的偏移量
  • 要返回的最大行数


在您的情况下,您将不得不在第一页使用这样的内容:

select * from your_table order by ... limit 0, 50

然后,第二页:

select * from your_table order by ... limit 50, 50

第三个:

select * from your_table order by ... limit 100, 50

等等; - )


在评论后修改以获取页码,您必须从您的网址接收,如下所示:

http://www.example.com/page.php?pagenum=2

然后,您将计算限制的第一个值:

$offset = 50 * intval($_GET['pagenum']);

并将其注入您的查询中:

select * from your_table order by ... limit $offset, 50


构建不同页面的URL现在需要获取以下URL:

http://www.example.com/page.php?pagenum=0
http://www.example.com/page.php?pagenum=1
http://www.example.com/page.php?pagenum=2
...

如果你知道你有700个元素,每页50个,你将有700/50页;-)
所以,这样的事情应该可以解决问题:

for ($i=0 ; $i<700/50 ; i++) {
    // Use http://www.example.com/page.php?pagenum=$i as URL
}


当然,700是一个可能会改变的值,不应该是硬编码的:它应该使用count查询从数据库中确定:

select count(*) as total
from your_table
...

答案 1 :(得分:0)

您的PHP文件可能会收到一个GET参数作为页码。

然后使用LIMIT($ page_number * $ messages_per_page),$ messages_per_page(伪代码)进行查询。

在您的情况下,

$ messages_per_page = 50。 $ page_number是从GET参数推断出来的,清理后,第一页是第0页。