我使用php mysql在我的游戏中设置了前100名排行榜,并且运行良好。然而,我还想要向玩家展示他们的位置,即使他们没有足够高的分数进入前100名。
所以我的表格有id
,user
,score
,php如下:
$getscore = mysql_query("SELECT * FROM $nameTable order by userscore desc LIMIT 0 , 100 ");
if (!$getscore || mysql_num_rows($getscore)==0) {
$msg = mysql_error();
$string .= '&kode=Data Failed&';
} else {
$string .= '&nr='.mysql_num_rows ($getscore);
$i = 0;
while ($row = mysql_fetch_assoc ($getscore)) {
while (list ($key, $val) = each ($row)) {
$string .= '&' . $key . $i . '=' . stripslashes($val) ;
}
$i++;
}
$string .='&';
}
as2脚本是:
myData.onLoad = function(success)
{
if (success)
{
for (i = 0; i < myData.nr; i++)
{
scroll.spContentHolder["n" + i].text = myData["username" + i];
scroll.spContentHolder["s" + i].text = myData["userscore" + i];
}
}
那么我如何才能将玩家的等级和分数返回到我的排行榜顶部呢?我已经读过关于在MySQL中对分数进行索引但不确定如何将其与php和as2相关联。
答案 0 :(得分:0)
我不确定您是否正在寻找SQL查询来执行此操作或PHP代码或两者。这是您正在寻找的SQL查询,因为我对actionscript一无所知。
假设您已经(或可以获得)用户名或ID到变量中(我假设您有ID)
SELECT username, score FROM $tablename WHERE id=$id;
答案 1 :(得分:0)
查询播放器的行已经为您提供了分数。但是,您需要添加子查询以获得排名,如下所示:
SELECT t0.*,
(
SELECT COUNT(*)
FROM $tablename t1
WHERE t1.score >= t0.score
) AS rank
FROM $tablename t0
WHERE $id = '$id';
在PHP中,排名将在排名&#39;排名下提供。结果集中的键。然后,您必须在AS2代码中解析其他键值对。有关tutsplus.com的教程,其中描述了整个系统:Self-Hosted PHP/SQL Leaderboard