2015-05-16 71 views
1

如何將相同的列(在本例中按「級別」排序)放在一起?我在我的數據庫中按等級列出他們的高分。如果他們是同一級別,我希望他們擁有相同的ID。PHP - 表ID相同

但我不想在別人上顯示ID。只有第一個。 下面是一個例子:

ID - Name - Level 
1 - John - 5 
2 - David - 4 
3 - Josh - 3 
    - Sam - 3 
4 - George - 2 

所以我希望把它們放在一起,但如果他們有相同的水平,只有第一個顯示的ID。

我不希望它看起來像:

1 - John - 5 
2 - David - 4 
3 - Josh - 3 
3 - Sam - 3 
4 - George - 2 

現在,它是剛剛上市的每一個人,並給予每一個唯一的ID。即使他們有相同的「水平」。 我該如何解決這個問題?這裏是我的代碼:

<?php 
      $sql = mysql_query("SELECT * FROM rookstayers ORDER BY level DESC LIMIT 0, 500"); 
      $id = 1; 
      while($row = mysql_fetch_array($sql)){ 
       $name = $row['name']; 
       $level = $row['level']; 
       $world = $row['world']; 
       $account = $row['accountstatus']; 
       $status = $row['onlinestatus']; 
       $onrow = ''; 
       $typeServ = ''; 

       $player_name = urlencode($name); 

       if ($status == 1){ 
        $status = 'Online'; 
        $onrow = 'online'; 
       } else { 
        $status = 'Offline'; 
        $onrow = 'offline'; 
       } 

       if ($account == 'Premium Account'){ 
        $account = 'Premium'; 
       } else { 
        $account = 'Free'; 
       } 

       if ($world == 'Aurora' || $world == 'Aurera'){ 
        $typeServ = 'active'; 
       } else { 
        $typeServ = ''; 
       } 

      echo "<tr class=" . $typeServ . ">"; 
      echo "<td>" . $id . "</td>"; 
       echo "<td>" . $name . " <a href='http://www.tibia.com/community/?subtopic=characters&name=" . $player_name . "' target='_blank'><img src='../../img/websites/tibia.png' title='Tibia Profile'></a><a href='http://www.pskonejott.com/otc_display.php?character=" . $player_name . "' target='_blank'><img src='../../img/websites/pskonejott.png' title='Pskonejott'></a>" . "</td>"; 
       echo "<td>" . $level . "</td>"; 
       echo "<td>" . $world . "</td>"; 
       echo "<td>" . $account . "</td>"; 
       echo "<td class=" . $onrow . ">" . $status . "</td>"; 
      echo "</tr>"; 

      $id++; 
} 
      echo "</tbody>"; 
     echo "</table>"; 
?> 
+0

儘管您可以在數據庫中執行此操作,但這種類型的表示邏輯最好在php中完成,方法是將循環中的當前值與打印值相比較。 –

回答

0

你可以爲當前級別創建一個臨時變量,並檢查它是否在輸出中顯示id。

$id = 1; 
    $last_player_lvl = ''; 
    while($row = mysql_fetch_array($sql)){ 
     ///.... 

    echo "<tr class=" . $typeServ . ">"; 
         echo "<td>" . (($last_player_lvl == $row['level']) ? '' : $id) . "</td>"; 
          echo "<td>" . $name . " <a href='http://www.tibia.com/community/?subtopic=characters&name=" . $player_name . "' target='_blank'><img src='../../img/websites/tibia.png' title='Tibia Profile'></a><a href='http://www.pskonejott.com/otc_display.php?character=" . $player_name . "' target='_blank'><img src='../../img/websites/pskonejott.png' title='Pskonejott'></a>" . "</td>"; 
          echo "<td>" . $level . "</td>"; 
          echo "<td>" . $world . "</td>"; 
          echo "<td>" . $account . "</td>"; 
          echo "<td class=" . $onrow . ">" . $status . "</td>"; 
         echo "</tr>"; 
if($last_player_lvl == $row['level']){ 
    $id = $id; 
}else{ 
    $id++; 
} 
$last_player_lvl = $row['level']; 
//.... 
+0

嘗試了您的代碼,但它是多行上的語法錯誤。你忘了在代碼中包含一些東西嗎?我複製/粘貼添加的行。你可以添加我也有的完整代碼嗎?我可能把它放在錯誤的地方,idk。即時通訊新的PHP,所以我不知道這樣的一切,但 – user2849838

+0

哦,我注意到了,你把$ d而不是$ id。但現在我解決了這個問題,它是0錯誤。但現在每個ID都是空白的。我還假設你做了「if」陳述? – user2849838

+0

對不起,我是通過數組模擬你的數據。讓我更新代碼。 – mdodong