2

我试图实现一种方法,在该方法中,我创建了一个记分牌(while 循环)并按某个数字字段(点)对获取的结果进行排序。但我需要实现的是如下

rank----username--point
1st------test-----------3200
2nd-----test2---------1200

等等。我对结果进行分页并限制每页 25 个结果。我通过以下方式尝试了一个while循环

while($row = mysql_fetch_array($query) || $i<=$totalnumberofrows ){
   echo out the results
$i++
}

它的作用是完美地从 1 到 25 编号,但另一方面,在第 2 页上它又从 1 到 25 编号。有什么诀窍可以实现我需要实现的目标吗?即从 1 到(总行数)的连续编号,即使在分页时也是如此。

4

3 回答 3

2

您正在寻找的是 MySQL LIMIT 语句。例如,以下查询将返回条目 0-24(因此,数据库中的前 25 个条目):

SELECT * FROM entries ORDER BY `points` LIMIT 0, 25

假设您要获取第二页(接下来的 25 个条目),您可以执行以下操作:

SELECT * FROM entries ORDER BY `points` LIMIT 25, 25

这里要注意的最重要的一点是,第一个参数是它应该开始的行,第二个参数不是最后一行,而是它应该返回的总行数。

要确定起点,只需执行 (($page_number - 1) * 25),假设您的第一页编号为 1。例如,您可以执行以下操作:

<?php
$start = (($page_number - 1) * 25);
$query = "SELECT * FROM entries ORDER BY `points` LIMIT {$start}, 25";
// ... rest of your code goes here ...
?>
于 2012-04-14T01:25:38.383 回答
1

只需将每页的数字添加 25,对于第二页(在我的示例中)-为第三页添加 25-添加 50 等...

$page = 2;
while($row = mysql_fetch_array($query) || $i<=$totalnumberofrows ){
   echo out the results
   echo (($page-1)*$totalnumberofrows)+$i;
   $i++
}
于 2012-04-14T01:22:49.480 回答
0

如果您知道页码和偏移量,您应该能够执行以下操作

$rank = $offset * $page_number;
于 2012-04-14T01:22:21.900 回答