我正在为我的创业公司准备一个新的比赛脚本。我知道如何绕过基本的中间php。我一直在为这个网站开发一个基于熟练技术的系统,它涉及到使用xp或经验点,每个成员在锦标赛中赢得一场比赛。我目前试图克服的问题如下
我想给出具体的排名,只有少数选定的用户在网站上。
例子
Platinum - top 3% of users with highest xp
Gold - top 5% of users with highest xp - after the first 3%
Bronze - rest of the users on site with xp
Unranked - users with 0 xp
这是一个基本的崩溃。我真正需要做的就是为这个创建一个分类系统,在用户端,用这个可以看到的只是一个大图标,显示排名和他们的位置示例,在网站上排名第一,等等。
我遇到的问题是正确地识别或区分前3%和其他用户,然后是前5%等等。很容易给出排名,我所做的只是在午夜使用cron作业按xp降序排列用户,然后将排名写在与用户id相关的数据库列中。这样当用户访问页面查看页面所需加载的只是数据库列,而不是在页面加载时筛选所有成员。有没有更好的方法来设置它,不会影响页面加载时间,并允许我实时显示统计信息?
我仍然在学习,所以我不要求得到直接的答案,我会感谢任何和所有的帮助,因为这会让我找到正确的方法来设置这个,我可以从中学到东西。我在这里找到的所有排名系统以及谷歌都只与1-5星级或喜欢和不喜欢有关。提前谢谢你。(我包含了pdo标记,因为我正在使用pdo)
好的,谢谢你的帮助。这就是我目前所处的位置。
$u_count=d_c("select * from users where xp > 0");
$p = $u_count * .03;
$plat_update=d_u("update user where rank Between 1/$p set badge='platinum'");
$g = $u_count - $p;
$gold = $g * .05;
$g_start = $p + 1;
$gold_update=d_u("update user where rank Between $g_start/$gold set badge='gold'");
这是对的吗?有更好的做事方法吗?(我漏掉了青铜币,只剩下白金和黄金)
最佳答案
在表中包含所有数据(它们的“徽章”)之后,您将需要执行更新(可能每个“徽章”级别都需要更新一个)。你要首先识别出所有经验值为0的人,标记他们。然后是那些在底部92%的人,他们的徽章还没有被识别,然后是3%到8%之间的人,然后是前3%的人。
这是一个链接,可以选择顶部/底部的x%。
stackoverflow.com/questions/4741239/…
或者,我个人认为一个更好的链接:
stackoverflow.com/questions/1309137/mysql-limit-by-percentage
或者在计算完玩家总数后,可以使用以下方法:
SELECT * FROM table WHERE rank BETWEEN count/number and count/someothernumber --this allows you to create something like percents
关于php - 卡在基于技能的排名系统上,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21930505/