我有以下代码,该代码从mysql数据库中提取一个表并将其转换为html表。
$query = mysqli_query($link, "select * from timetable Where id = $id and subject != '' order by Day asc, Hour asc " );
?>
<tr>
<th>day</th>
<th>hour</th>
<th>subject</th>
</tr>
<?php
while ($row = mysqli_fetch_array($query)) {
echo "<tr>";
echo "<td>".$row['Day']."</td>";
echo "<td>".$row['Hour']."</td>";
echo "<td>".$row['Subject']."</td>";
echo "</tr>";
}
?>
我试图做到这一点,以便将日列转置为沿着表格顶部的第一行。
这是一张桌子的例子
day hour subject
0 5 Maths
0 7 Maths
1 0 Maths
1 11 Physics
2 0 Physics
2 9 Maths
3 0 Physics
3 4 Maths
3 6 Physics
3 10 Maths
4 3 Maths
4 8 Physics
5 0 Maths
5 9 Physics
6 1 Maths
6 6 Physics
(请注意,我删除了null值以使此问题的表变小)
这是我想要桌子的样子
Day 0 1 2 3 4 5 6
hour
1 physics
2
3
4 maths
5 ect
6
7
8
9
10
11
12
最佳答案
您可以先创建此模板
<tr>
<td>Hours\Days</td>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
之后
<?php
for($hour = 1;$hour < 13; $hour++){
echo "<tr>";
echo "<td>".$hour."</td>";
for($day = 0; $day < 7; $day++){
while ($row = mysqli_fetch_array($query)) {
if($row['Day'] == $day && $row['Hour'] == hour)
echo "<td>".$row['Subject']."</td>";
else
echo "<td></td>";
}
}
echo "</tr>"
}
?>
也许您可以编写比我短的代码,但方法简单。