K,我有一个关于PHP的问题。
我正在努力使我的游戏有水平和经验值的高分。
我的问题很简单,我想按总水平来排序,这样总水平最高的人就可以排在第一、第二、第三等。
但我也希望它按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>
';

最佳答案

直接在你的查询中完成:

SELECT * FROM skillsoverall ORDER BY lvl DESC, xp desc

SQL将允许ORDERBY子句中有多个列。在本例中,它现在将返回按最高级别到最低级别排序的数据,如果有多行具有相同级别,则它将数据从最高级别到最低级别进行排序。它还将使用limit子句始终如一地工作。

关于php - 订购-还可以另外订购吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12526898/

10-13 01:37