2012-09-21 34 views
2

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

只要做到這一點在查詢了蝙蝠的權利:

SELECT * FROM skillsoverall ORDER BY lvl DESC, xp desc 

SQL將允許在訂單多列的條款。在這種情況下,它現在將返回按照從最高到最低級別排序的數據,並且在具有相同級別的多於一行的數據時,它將數據從最高到最低XP排序。它也將始終如一地使用limit條款。

+0

好吧,非常感謝。它現在工作完美。我不知道它允許多列。 – hellman2741

+0

@ hellman2741很高興幫助。你可能也會對這個相當長的興趣 - 但非常詳細和充滿查詢,輸出和解釋 - [問題和答案](http://stackoverflow.com/questions/12475850/how-can-an-sql-query- return-data-from-multiple-tables)我發佈了一些幫助SQL查詢的工具 - 它主要關注於從多個表中獲取數據,但是您可以從閱讀中受益,從而更好地瞭解您可以在SQL伴侶:) – Fluffeh