PHP MySql游戏的得分页面

时间:2013-01-11 18:15:49

标签: php mysql

获得分数页面的逻辑是什么:

  • 所有玩家之间的当前用户顺序(如#115):所有用户的MySql SELECT ORDER BY得分DESC然后检查当前用户在哪里?

  • 更好的两个分数:获取当前用户然后SELECT LIMIT 2 WHERE得分> “$ currentuserscore”?

  • 少了两个分数:获取当前用户然后SELECT LIMIT 2 WHERE得分< “$ currentuserscore”?

我觉得这是非常错误的,还有其他方法吗?

1 个答案:

答案 0 :(得分:1)

对于选项1:

select count(1) as count from users where score>=$user_score

这应该给你这个人的等级。如果您担心与当前用户具有相同分数的多个人将>=更改为>,那么您可以在结果中添加1。

对于选项2和3:

select * from users where score>$user_score order by score asc limit 2

select * from users where score<$user_score order by score desc limit 2

或者,一旦获得第一个查询的排名,您就可以在一个查询中获得全部5个(2个之前,2个之后和当前用户):

$start = $user_rank - 2;
$query = "select * from users order by score asc limit {$start},5";

或者,如果您不想要包含当前用户或与当前用户具有相同分数的任何人,您可以这样做:

$start = $user_rank - 2;
$query = "select * from users where score!=$user_score order by score asc limit {$start},4";