【问题标题】:How can i group data from mysql database into an html table using php如何使用 php 将 mysql 数据库中的数据分组到 html 表中
【发布时间】:2021-03-15 10:53:05
【问题描述】:

我有两个 table ,我按如下方式连接在一起

    <?php 
    $userqry="
    SELECT * 
      FROM permission_category c
      JOIN permission_group g
        ON c.perm_group_id = g.id 
    ";
    $stmt = $conn2->prepare($userqry);
    $stmt->execute();
    while($row= $stmt->fetch()){
     } ?>
   <tr>
   <td><?php echo $row['name'];?></td>
   <td><?php echo $row['perm_group_name'];?>
   </td>
   <td>
   </tr>
<?php } ?>

结果如下

但是我正在寻找的结果应该如下所示

我怎样才能做到这一点?

【问题讨论】:

  • 这是一个经典的控制中断实现。您的数据首先需要正确排序。然后,在数据循环中,检查当前行的值(无论你称之为第一列的值)是否仍然与最后一行相同。根据这一点,您决定需要为当前行创建哪个输出。
  • 到目前为止您尝试过什么?你被困在哪里了?
  • 我看不到所需结果集与另一个结果集的关系
  • 你可以使用 Group By

标签: php mysql grouping


【解决方案1】:

此代码“记住”循环中的前一个名称。如果名称未更改,则不会显示:

<?php 
$userqry = "SELECT * FROM `permission_category` 
            INNER JOIN `permission_group` ON 
            `permission_category`.`perm_group_id`=`permission_group`.`id`";
$stmt = $conn2->prepare($userqry);
$stmt->execute();

$current_name="";
while ($row= $stmt->fetch()) {
  if ($row['name'] != $current_name) {
    $name = $row['name'];
    $current_name = $name;
  } else {
    $name = "";
  }
?>
<tr>
  <td><?php echo $name;?></td>
  <td><?php echo $row['perm_group_name'];?>
  </td>
  <td>
</tr>
<?php } ?>

注意:您应该在查询中添加 ORDER BY 以便以正确的方式对结果进行排序(可能已经排序)

【讨论】:

  • 您可以在查询中 ORDER BY 或对结果数组进行排序。除非限制结果,否则没有区别。
猜你喜欢
  • 1970-01-01
  • 2017-08-08
  • 2021-06-08
  • 1970-01-01
  • 1970-01-01
  • 2017-11-06
  • 1970-01-01
  • 2019-03-22
  • 2021-01-31
相关资源
最近更新 更多