我有以下代码,该代码从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>"
}
?>


也许您可以编写比我短的代码,但方法简单。

09-28 12:58