K,我有一个关于PHP的问题。 我正在尝试为我的游戏制作一个高分,这个游戏有水平和XP。
我的问题很简单,我想按总水平排序,以便总水平最高的人成为第一,第二,第三等。 但是我也想让它按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>
';
答案 0 :(得分:0)
直接在您的查询中执行此操作:
SELECT * FROM skillsoverall ORDER BY lvl DESC, xp desc
SQL将允许order by子句中的多个列。在这种情况下,它现在将返回按最高到最低级别排序的数据,如果有多个具有相同级别的行,则会将数据从最高到最低的XP排序。它也将使用limit
子句一致地工作。