【问题标题】:PHP - Table id the samePHP - 表 id 相同
【发布时间】:2015-07-28 16:06:03
【问题描述】:

如何将相同的列(在这种情况下按“级别”排序)放在一起?我正在制作一个高分,我从我的数据库中按级别列出它们。如果他们是同一级别,我希望他们有相同的 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>";
?>

【问题讨论】:

  • 虽然您可以在数据库中执行此操作,但这种类型的表示逻辑最好在 php 中完成,方法是将当前值与打印值的循环中的前一个值进行比较。

标签: php mysql sorting html-table rows


【解决方案1】:

您可以为当前级别创建一个临时变量并检查它以查看 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'];  
//....

【讨论】:

  • 尝试了您的代码,但它的多行语法错误。您是否忘记在代码中包含某些内容?我复制/粘贴了你添加的行。你可以添加我也有的完整代码吗?我可能把它放错了地方,idk。我是 php 新手,所以我还不知道这样的一切
  • 哦,我注意到了,你用 $d 代替了 $id。但现在我解决了这个问题,它是 0 个错误。但现在每个 ID 都是空白的。我还假设你做了“如果”陈述?
  • 对不起,我是通过数组来模拟你的数据。让我更新代码。
  • Parse error: syntax error, unexpected '$id' (T_VARIABLE) in C:\xampp\htdocs\index\top\index.php on line 177 这是这一行$id = ($last_player_lvl == $row['level']) ? $id : $id+1;
  • 请再检查一下,我已经把那个三元运算改成了if-else
猜你喜欢
  • 2013-04-16
  • 1970-01-01
  • 2022-07-22
  • 1970-01-01
  • 1970-01-01
  • 2013-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多