2012-04-14 34 views
2

我试图实现一种方法,我创建一个记分板(while循环),并通过某个数字字段(点)对获取的结果进行排序。但我需要达到的是如下排名/编号在php

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

etc ..我分页我的结果,每页限制25个结果。我尝试了while循环通过以下方式

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

这样做是从1到25号完美,但在另一方面,第2页它再次数字1-25。 是否有一个技巧来实现我需要达到的目标? 也就是说即使在分页时,也可以从1到(总行数)连续编号。

+0

尝试ezSQL。它很容易做分页任务。 – hjpotter92 2012-04-14 01:19:19

+0

[最后,简单的分页类。](http://www.catchmyfame.com/2007/07/28/finally-the-simple-pagination-class/)干杯。 – Josh 2012-04-14 01:28:25

回答

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 ... 
?> 
0

如果您知道页码和偏移,你应该能够做到以下几点

$rank = $offset * $page_number; 
1

只需添加25个数为每个页面, 第二页(在我的例子) - 增加25 第三页 - 加50 等等

$page = 2; 
while($row = mysql_fetch_array($query) || $i<=$totalnumberofrows){ 
    echo out the results 
    echo (($page-1)*$totalnumberofrows)+$i; 
    $i++ 
}