2017-02-08 10 views
0

私は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>"; 
} 

?> 

イム。ここで

がここ

(私はこの質問のためにテーブルを小さくするためにnull値を削除することに注意してください)テーブル

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 
+0

"mysqlデータベースからテーブルを取り出し、それをhtmlのテーブルに変換するコード" - >そのコードはどこですか? – elementzero23

+0

http://stackoverflow.com/questions/14834290/mysql-query-to-dynamically-convert-rows-to-columnsこのリンクを参照してください。 elementzero23のIVE @ –

+0

は、基本的な考え方は、2つのループ、 '​​'は '' 一の内部ためのものであること –

答えて

2

あなたはこのテンプレートを作成することができますfirsly

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

多分uは私より短いコードが、その簡単な方法を書くことができた後

+0

は、答えをdoesntのはかなりの仕事をありがとう、私はそれを動作させるために試してみて、あなたに戻ってくる –

+0

はい私はそのことのベストプラクティスを知っています。仕事の中で私にそれを聞いてください。ありがとう。 – vangoo

関連する問題