0

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

所以我的表有id, user, scorephp 如下:

$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 关联起来。

4

2 回答 2

0

我不确定您是否正在寻找执行此操作的 SQL 查询或 PHP 代码或两者兼而有之。这是您要查找的 SQL 查询,因为我对操作脚本一无所知。

假设您拥有(或可以获得)用户名或 ID 到变量中(我将假设您拥有 ID)

SELECT username, score FROM $tablename WHERE id=$id;
于 2013-04-01T02:50:47.937 回答
0

查询玩家所在的行已经给了你分数。但是,您需要添加一个子查询来获得排名,如下所示:

SELECT  t0.*,
    (
        SELECT  COUNT(*)
        FROM    $tablename t1
        WHERE   t1.score >= t0.score
    ) AS rank
FROM    $tablename t0
WHERE   $id = '$id';

在 PHP 中,排名将在结果集中的“排名”键下可用。然后,您必须在您的 AS2 代码中解析额外的键值对以获得排名。tutsplus.com 上有一个教程,其中描述了整个系统:Self-Hosted PHP/SQL Leaderboard

于 2014-10-14T12:35:01.823 回答