您好我正在建立一个带积分系统的网站。
(假设用户在帖子上刊登广告,他会获得5分)
我正在使用:
SELECT id, username, active, points
FROM users
WHERE active='1'
ORDER BY points DESC
显示用户顶部,我也可以显示(使用while循环)地点。
但我如何在他们的个人页面或任何其他页面上显示 地方?
作为第二个问题,我如何将用户引导至他们的位置? (如果他是......在第1000位......)
答案 0 :(得分:1)
如何计算比我更多积分的用户:
select count(*) from users where points > $my_points;
答案 1 :(得分:1)
SELECT id, username, active, points, @place = @place + 1
FROM users, (select @place := 0) p
WHERE active='1'
ORDER BY points DESC
答案 2 :(得分:0)
如果你想根据点数显示玩家的等级或站位,你会想要rownum
。我不认为MySQL有rownum功能,但我找到了一个链接,告诉你如何伪造它:http://jimlife.wordpress.com/2008/09/09/displaying-row-number-rownum-in-mysql/(免责声明:我没试过这个)。
......当然,我问你如果两名球员得分相同,你会怎么做?给他们相同的排名?这可能会变得有点复杂,但也许我联系的解决方案可以适应?
答案 3 :(得分:0)
我所看到的大多数基于浏览器的游戏等都有排名系统做的基本上都是这样做的查询,除了将结果放入“排名”表并且每天只更新一次表一次。然后找出一个人的位置,只需查询“排名”表并从auto_inc'd数字列中获取值。您当然可以在每个查询中执行此操作,但效率不高,并且每天显示更新的排名或通常可接受的任何排名。
答案 4 :(得分:0)
要回答您的第一个问题,您可以使用以下查询,这将返回用户点。
SELECT points FROM users WHERE id='$userid'
但是我不明白你的第二个问题可以澄清一下吗?