php - 如何使用php/mysql进行多类数据的选择和显示
问题描述
我试图创建一个类似于运动表的表。此表中有 8 个组。(AH) 每组有 4 支队伍。我尝试使用下面的 SQL 代码选择所有团队,并按组名对其进行排序
SELECT *
FROM teams
ORDER BY groupName
我希望结果显示在包含 html 表的面板中。下面的代码:
<?php
while($row = $result->fetch_assoc()){
?>
<div class="flip">
<h3>Group <?php echo($row['groupName']);?></h3>
</div>
<div class="panel">
<table>
<thead>
<tr>
<th>#</th>
<th>Team</th>
</tr>
</thead>
<tbody>
<tr>
<td><?php echo($row['team_pos']); ?></td>
<td><?php echo($row['teamName_Pr']); ?></td>
</tr>
</tbody>
</table>
</div>
<?php
}
?>
但是随着 while 循环的每次重复,每个团队的组名都会重复。如何在特定表格中显示所有组团队?此外,当我使用 GROUP BY 而不是 ORDER BY 时,每组只显示一个团队。
我的连接方式是mysqli。
解决方案
您需要按groupName
. 不要使用GROUP BY
,因为它不会返回所有行。
<?php
//$result = ...
$groups = [];
while($row = $result->fetch_assoc()){
@$groups[$row['groupName']][] = $row;
}
foreach ($groups as $groupName => $rows) {
?>
<div class="flip">
<h3>Group <?php echo($groupName);?></h3>
</div>
<div class="panel">
<table>
<thead>
<tr>
<th>#</th>
<th>Team</th>
</tr>
</thead>
<tbody>
<?php
foreach ($rows as $row) {
?>
<tr>
<td><?php echo($row['team_pos']); ?></td>
<td><?php echo($row['teamName_Pr']); ?></td>
</tr>
<?php
}
?>
</tbody>
</table>
</div>
<?php
}
顺便说一句,请考虑使用模板引擎。
推荐阅读
- java - 从不同的场景切换后,场景在舞台上偏离中心
- angular - 在父模块中使用延迟加载的组件?
- angular - 在 Angular 6 中,我在组件中收到错误“NullInjectorError: No provider for Store”
- docker - 由于您的 Docker 已经存在,如何在不使用“运行”的情况下在 Docker 中安装主机驱动器
- c++ - 在范围内声明对象时,优先级队列是否为空?
- javascript - API调用后Vue.js不显示结果
- asp.net-mvc - ASP MVC 核心 | 索赔 | 剃须刀 | 根据声明显示/隐藏元素
- python - 检查标准输出是否为空?(stdout 和 readline() 的问题)
- webview - 在颤动的webview中禁用水平滚动
- haskell - 在 Windows 上安装 GHC