2012-04-14 20 views
2

スコアボード(whileループ)を作成し、取得した結果を特定の数値フィールド(ポイント)で並べ替える方法を試しました。しかし、私が達成する必要があるのは、次のようなものです。PHPでのランキング/番号付け

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

など。私の結果はページ数が25ページに制限されています。私はこれがないことは完全に1〜25の数であり、次のよう

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

にwhileループを試してみましたが、一方で、2ページその番号に再び1-25から。 達成する必要があることを達成するためのトリックはありますか? I.ページ番号を付けても1から(行の総数)までの連続番号付け。

+0

ezSQLを試してみてください:あなたは、次のない例えば、あなたの最初のページが1番されたと仮定すると、 - 出発点を決定するために

は、単に(1)* 25($のPAGE_NUMBER)を行います。それはかなり簡単にページ分割の作業を行います。 – hjpotter92

+0

[最後に、単純なページ区切りクラス。](http://www.catchmyfame.com/2007/07/28/finally-the-simple-pagination-class/)乾杯。 – Josh

答えて

2

を50 などを追加すると、MySQLのLIMIT文です。

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

あなたは2ページ目(次の25エントリー)を取得したいと言って、あなたが行うことができます。たとえば、次のクエリでは(そう、データベース内の最初の25エントリ)がエントリー0-24を返します:ここで注意すべき

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

最も重要なことは、最初の引数が、それは開始すべき行で、2番目の引数は最後の行ではありませんが、それは返す必要があります行の合計額ということです。

<?php 
$start = (($page_number - 1) * 25); 
$query = "SELECT * FROM entries ORDER BY `points` LIMIT {$start}, 25"; 
// ... rest of your code goes here ... 
?> 
0

あなたはページ番号を知っているし、あなただけの(私の例では)、2ページ目の各ページの番号、 に25を追加し、次の

$rank = $offset * $page_number; 
1

を行うことができるはずオフセットした場合 - 追加3ページ目のための25 - あなたが探しているもの...

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