2

K さん、PHP について 1 つ問題があります。レベルと XP があるゲームでハイスコアを作ろうとしています。

私の問題は非常に単純です。合計レベルが最も高い人が最初、2番目、3番目などになるように、合計レベルで並べ替えたいのですが、XPで並べ替えたいので、彼らが合計レベルが同じ場合、ランダムではなく、XP が最も高い人が最初に表示されます。

これは、レベルごとに注文するためにこれまでに持っているものですが、XPをチェックする方法がわかりません。

$count = mysql_result(mysql_query("SELECT COUNT(*) FROM skillsoverall"),0) or     die(mysql_error());

        $from = (isset($_GET["from"]) && is_numeric($_GET["from"]) && $_GET["from"] < $count) ? $_GET["from"] : 0;

        $query = mysql_query ("SELECT * FROM skillsoverall ORDER BY lvl DESC limit $from, $ppls_page") or die(mysql_error());

        $i = $from;
        while($row = mysql_fetch_array($query)){
        $i++;
        if($i < $top_hiscore) {
if($i & 1) {
        echo '<tr class="row row1">
<td class="rankCol"><span>'.$i.'</span></td>
<td class="nameCol"><span><a href="'.$website.'/'.$pers.'?name='.$row["playerName"].'"     target="_self">'.BBCode($row["playerName"]).'</a></span></td>
<td class="lvlCol">'.dots($row["lvl"]).'</td>
<td class="xpCol">'.dots($row["xp"]).'</td>
</tr>   
';
} else {
        echo '<tr class="row row2">
<td class="rankCol"><span>'.$i.'</span></td>
<td class="nameCol"><span><a href="'.$website.'/'.$pers.'?name='.$row["playerName"].'"     target="_self">'.BBCode($row["playerName"]).'</a></span></td>
<td class="lvlCol">'.dots($row["lvl"]).'</td>
<td class="xpCol">'.dots($row["xp"]).'</td>
</tr>   
';
4

1 に答える 1

0

すぐにクエリでそれを行うだけです:

SELECT * FROM skillsoverall ORDER BY lvl DESC, xp desc

SQL では、order by 句で複数の列を使用できます。この場合、最高レベルから最低レベルにソートされたデータが返され、同じレベルの行が複数ある場合は、データが最高から最低 XP にソートされます。また、limit句を使用して一貫して機能します。

于 2012-09-21T08:32:41.970 に答える