php - 从 mysql 中获取数据并在类别下分组
问题描述
我用这种结构从数据库中获取数据
Cars | Category | 1Days | 3 Days
-------|--------------|------–--|---------––
Car1 | Off Road | 50.00 | 90,00
Car2 | Off Road | 50.00 | 90,00
Car3 | Minivan | 50.00 | 90,00
我想把它改成
Off Road
Cars | 1Days | 3 Days
-------|----------|---––
Car1 | 50.00 | 90,00
Car2 | 50.00 | 90,00
Minivan
Cars | 1Days | 3 Days
-------|----------|---––
Car3 | 50.00 | 90,00
我想在类别下对表格进行分组
谢谢你提前
解决方案
您可能必须从 PHP 表示层处理此问题。这是一种方法:
$sql = "SELECT * FROM yourTable ORDER BY category, cars";
$result = $conn->query($sql);
$category = NULL;
echo "<table colspan=\"3\">";
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
if ($category != $row["category"]) {
echo "<tr><td colspan=\"3\">" . $row["category"] . "</tr>";
echo "<tr><td>Cars</td><td>1 Days</td><td>3 Days</td></tr>";
$category = $row["category"];
}
echo "<tr>";
echo "<td>" . $row["cars"] . "</td>";
echo "<td>" . $row["1days"] . "</td>";
echo "<td>" . $row["3days"] . "</td>";
echo "</tr>";
}
echo "</table>";
}
上面的代码使用逻辑,在结果集中看到一个尚未看到的类别时,将打印两个标题行。第一个标题行只包含类别,第二个包含表中三列的标题。
这里的一个重要注意事项是,我们ORDER BY category, cars
在 MySQL 查询中使用在结果集数据中强加我们想要的顺序。如果不使用ORDER BY
,我们的方法可能行不通。
推荐阅读
- python - 使用称为参数的 get 方法传递 tkinter 变量
- javascript - 通过 React 中的回调函数获取 API
- flutter - 如何在我的应用处于暂停状态时控制它?
- hyperledger-fabric - Hyperledger Fabric 中的真实外部 CA
- python - 当我试图在我的 cmd 中安装 pandas 时,我得到了他的错误
- r - 如何在 R 中向 POSIXct 对象添加天数
- blazor - Blazor Webassembly - 标头中的 JWT(在我的应用程序之前)
- android - Android PagedList 滚动到底部
- php - 重新索引多维数组
- python-3.x - 要求:安装 iRedMail 时 Centos 7 上的 python(abi) = 3.6