2011-02-07 26 views
1

嗨我正在建立一個網站,積分制度。如何在PHP中創建用戶頂級列表?

(比方說,如果一個用戶的建議後,他將獲得5分)

我使用:

SELECT id, username, active, points 
    FROM users 
    WHERE active='1' 
    ORDER BY points DESC 

頂部顯示的用戶,也我可以顯示(while循環)他們的地方

但如何才能使我顯示他們地方自己的個人網頁上,或任何其他頁面?

而作爲第二個問題,我如何指導用戶到他們的地方在頂部? (如果他在第1000位)

回答

0

聽起來像是你想要根據點數顯示玩家的等級或地位,你想要rownum。我不認爲MySQL有rownum功能,但我找到了一個鏈接,告訴你如何僞造它:http://jimlife.wordpress.com/2008/09/09/displaying-row-number-rownum-in-mysql/(免責聲明:我沒有試過這個)。

......當然,我問你如果兩個玩家有相同的點數,你會怎麼做?給他們同樣的等級?這可能會變得更復雜一點,但也許我所鏈接的解決方案可以調整?

1

如何統計有更多的點比我的用戶:

select count(*) from users where points > $my_points; 
+0

如果頂級選手全部擁有100分,那意味着擁有99分的選手將排在第6位。所以排名從1直到6,可能看起來很奇怪,當人們詢問2,3,4和5排名發生了什麼時。 – FrustratedWithFormsDesigner 2011-02-07 17:17:09

+0

嗯,我認爲這是不可避免的,因爲沒有二階排序標準排名系統。所以你可以簡單地將「你的等級是6」的措辭改爲「你並列第6等級」。 – 2011-02-07 17:24:28

1
SELECT id, username, active, points, @place = @place + 1 
    FROM users, (select @place := 0) p 
    WHERE active='1' 
    ORDER BY points DESC 
0

我所見到的最基於瀏覽器的遊戲等。有一個排名系統做的基本上是做一個查詢就像那樣,除了將結果放入「行列」表並且每天只更新一次表格。然後查找某人的位置,只需查詢該「排名」表並從auto_inc的數字列中獲取該值即可。你當然可以做每一個查詢,但這不是很有效,每天顯示更新的等級或任何通常可接受的內容。

0

要回答你的第一個問題,你可以使用下面的查詢,這將返回用戶點數。

SELECT points FROM users WHERE id='$userid' 

但是我不明白你的第二個問題可以澄清嗎?

相關問題