我通过这种结构从数据库中获取数据
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
我想将表归类
感谢您的进阶
答案 0 :(得分:2)
您可能必须在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>";
}
上面的代码使用逻辑,该逻辑在结果集中看到尚未看到的类别时将打印两个标题行。第一标题行仅包含类别,第二标题行包含表中三列的标题。
这里重要的一点是,我们在MySQL查询中使用ORDER BY category, cars
在结果集数据中添加所需的顺序。如果不使用ORDER BY
,我们的方法可能行不通。