2015-05-16 39 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