如何用PHP编写寻呼机效果


How to write pager effect in PHP

对不起,我是PHP新手。现在我想学习如何用PHP编写分页效果。我知道网上有很多关于这个的教程。我搜索了一下,找到了他们的参考资料。然而,当我自己尝试时,并且没有引用其他资源,我仍然不知道如何用PHP编写分页效果。

现在,我想知道用PHP编写分页的基本和重要的事情是什么。如果有人能给我更多的细节,谢谢。

在这个例子中,我将使用MySQL,因为它是一个与PHP一起使用的流行数据库。一般原则适用于其他数据库,但使用SQL实现结果的确切方式不同。

分页的本质是你有一个数字记录,比如105,你只想一次显示更小、更易于管理的记录数量,比如10个。为了做到这一点,您需要知道如何找出记录的总数,并且需要知道如何只选择记录的子集。

首先,找出你有多少记录。为此,您可以使用COUNT(*)对表中的记录进行计数。如果您的表名为Users:

SELECT COUNT(*) FROM Users;

由于我们说表中有105条记录,这将返回结果105。我们说每页有10条记录,所以计算一下总共有多少页:105/10=10.5;四舍五入到11,因为第10页之后的额外记录需要自己的页面。所以,总共有11页。您的网页将显示控件,使用户可以从1到11中选择一个页面。

一次只获取一页,而不是获取所有记录。在MySQL中,通常使用LIMIT关键字;这允许您选择一系列记录。LIMIT语法的工作方式如下:LIMIT $SKIP, $COUNT,其中$SKIP是要跳过的结果集中的记录数,$COUNT是要返回的数。(事实上,您将获得最多$COUNT记录,以防可用记录更少。)

用户已请求第6页。这意味着我需要跳过5页才能显示结果。每页10条记录,这意味着我将跳过5*10条记录,即50条记录。换句话说,$SKIP = ($PAGE_NUMBER - 1) * $PAGE_SIZE。您的查询如下所示:

SELECT User_ID, UserName, City, State from Users LIMIT 50, 10;

这将为您提供表格中的51-60条记录。

请参阅文档以了解有关LIMIT如何工作的更多信息:

http://dev.mysql.com/doc/refman/5.5/en/select.html

现在您只有一页记录。但是,记录的编号取决于它们的顺序。由于排序未定义,上面的查询将给您带来不可预测的结果。(数据库可以按照它选择的任何顺序返回记录,除非你命令它使用特定的顺序。)因此,要进行分页,你需要定义记录的顺序。使用ORDER BY定义订单:

SELECT User_ID, UserName, City, State from Users ORDER BY UserName LIMIT 50, 10;

这允许您显示不同页面的结果,并且始终知道,当您显示第6页时,它包含第5页上的记录之后和第7页上的之前的记录。

(如果你的记录没有任何自然顺序,你必须定义一个任意的顺序才能正确工作。)

在这个答案中,我完全避免提及PHP,因为我认为没有必要这样做来解释分页。分页完全是处理数据的问题。如果你理解这一点,我认为你可以去阅读教程,它们对你来说很有意义,然后你就可以想出如何编写PHP来做到这一点。

  1. 获取页码
  2. 知道每页要显示多少项
  3. 使用mysql命令"LIMIT",获取偏移量并选择需要的行数

想要使用类吗?http://net.tutsplus.com/tutorials/php/how-to-paginate-data-with-php/

或者只是一个简单的脚本来修改?http://pastebin.com/J8nTk1q5

如果你是PHP的新手,那么你需要学习更多的PHP,否则将来会有混淆的风险。