0

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 に関連付ける方法がわかりません。

4

2 に答える 2

0

これを行うための SQL クエリを探しているのか、PHP コードを探しているのか、あるいはその両方を探しているのかわかりません。私は actionscript について何も知らないので、これがあなたが探している 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 に答える