如何在PHP中编写寻呼效果

时间:2012-08-31 02:38:10

标签: php

对不起,我是PHP的新手。现在我想学习如何在PHP中编写分页效果。我知道网上有很多这方面的教程。我搜查了它,并提到了它们。但是,当我自己尝试并且没有引用其他资源时,我仍然不知道如何用PHP编写分页效果。

现在,我想知道在PHP中编写分页的基本和重要之处。如果有人能给我更多细节,谢谢。

2 个答案:

答案 0 :(得分:4)

对于这个例子,我将使用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 :(得分:1)

  1. 获取页码
  2. 了解每页显示的项目数。
  3. 使用mysql命令“LIMIT”,获取偏移并选择所需的行数。
  4. 想要上课吗? http://net.tutsplus.com/tutorials/php/how-to-paginate-data-with-php/

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

    如果您不熟悉PHP,那么您需要学习更多PHP,否则可能会产生混淆。