排行榜除了得分外还返回排名

时间:2013-04-01 02:46:25

标签: php mysql actionscript-2

我使用php mysql在我的游戏中设置了前100名排行榜,并且运行良好。然而,我还想要向玩家展示他们的位置,即使他们没有足够高的分数进入前100名。

所以我的表格有iduserscore,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相关联。

2 个答案:

答案 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