2014-03-02 69 views
0

因此,我擁有一個在線遊戲,每個用戶都有一個教練級別,所以我們可以將他們排名從最高到最低。在數據庫中,存儲教練級別的數字有一個數字,例如1或4或5.然後,我們將其除以0.001以得到真正的教練級別。通過desc排序似乎失敗

以下是迄今爲止的第一個編碼。

$pageLimit=PAGE_PER_NO*$id; 
$query="SELECT * FROM users ORDER BY trainer_level DESC limit $pageLimit,".PAGE_PER_NO; 
$res=mysql_query($query); 
$count=mysql_num_rows($res); 
$HTML=''; 
if($count > 0){ 


    echo "<table width='100%' border='0' cellspacing='0' cellpadding='0'>"; 
echo "<table width='100%' border='1' table class='gridtable' > 


<tr> 
<th>Username</th> 
<th>Trainer Level</th> 

</tr>"; 

     while($row = mysql_fetch_array($res)) 
     { 
     $i++; 

     echo '<td><img src="http://domainame.com/'.$row['avatar'].'" border=0>' ; 
     echo "<a href='membersprofile.php?nicky=".$row['username']." '>" . $row['username'] . "</a></td>"; 


    echo "<td>"; 
    echo "Wins:  "; 
    $trainer_level= mysql_real_escape_string($row['trainer_level']); 
$trainer_level2 = strip_tags($trainer_level); 

$b = '0.001'; 

$total = ($trainer_level2 * $b) ; 
     echo $total ; 
     "</td>"; 

    echo "</tr>"; 

     } 
     echo "</table>"; 


}else{ 
    $HTML='No Data Found'; 
} 
echo $HTML; 

這裏是我所得到的 http://gyazo.com/994d215f0621371c62d9d1c087f77b1f.png

已經可以看到0.008達比咱高的屏幕截圖:0.075 但0.075大於0.008

+1

從tl desc的表順序中選擇CAST(trainer_level AS DECIMAL(30,3))作爲tl將您的值翻譯爲字符串,而不是十進制 – davethecoder

+0

順便說一句,像這樣混合邏輯和演示文稿只會導致頭痛進一步在路上。如果你可以將你的PHP從你的HTML中分離出來 - 可能通過使用一個MVC框架 - 你的網站會更容易維護! –

回答

1

我想這是因爲您的trainer_level列不是數字數據類型。您需要在排序前將其轉換爲數字。

+0

謝謝你,這工作多麼愚蠢,它應該是int – user3369656