如何将列转换成行?

时间:2017-02-08 10:31:23

标签: php html mysql

我有以下代码从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列转换为沿着表的顶部作为第一行。

以下是表格的示例

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

(请注意,为了解决这个问题,我删除了空值以使表格更小)

这是我希望表格看起来像什么

       Day  0     1     2      3     4     5     6 
  hour
     1   physics
     2
     3
     4                      maths
     5          ect 
     6
     7
     8
     9 
     10
     11
     12

1 个答案:

答案 0 :(得分:2)

您可以第一次创建此模板

<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>"
}
?>

也许你可以编写比我更短的代码,但它的方法很简单。