0

最初の列が「Fruit」で、最後の列が「Total」のテーブルがあります。

そして、その間の列は、生徒の数によって動的に作成されます。以下は、データベースがこれまでに示したものから、動的に作成しようとしているものです。

<table border="1">
  <tr>
    <th>Fruit</th>
    <th>Sally</th>
    <th>John</th>
    <th>Total</th>
  </tr>
  <tr>
    <td>apples</td>
    <td>5</td>
    <td>3</td>
    <td>8</td>
  </tr>
  <tr>
    <td>bananas</td>
    <td>3</td>
    <td>5</td>
    <td>8</td>
  </tr>
  <tr>
    <td>Oranges</td>
    <td>3</td>
    <td>3</td>
    <td>6</td>
  </tr>
  <tr>
    <td></td>
    <td>11</td>
    <td>11</td>
    <td>22</td>
  </tr>
</table>

これが私が遭遇する困難です。果物の名前、学生、および消費された果物はデータベースから取得されます。そして、果物の列や学生の列がいくつあるかわかりません。

これは私が得た限りです:

<table> 
    <tr> 
        <th>Fruit</th> 
        <?php $sqlS = db("SELECT s.*, sf.consumed FROM `tbl_students` s, `tbl_students_fruit` sf WHERE s.studentid = f.studentid ORDER BY s.studentname ASC"); 
            while($student = mysql_fetch_array($sqlS)){ ?>
        <th><?php echo $student['studentname'];?></th> 
        <?php } ?> 
        <th>Total</th> 
    </tr> 


  <?php $sqlF = db("SELECT * FROM `tbl_fruit` ORDER BY fruitname ASC"); 
        while($fruit = mysql_fetch_array($sqlF)){ ?>
    <tr> 
        <td><?php echo $fruit['fruitname'];?></th> 

        <td></td> 
        <td></td>
    </tr> 
   <? } ?>

</table>

ご覧のとおり、Fruit行とStudent列を作成しています。しかし、それは不完全です。列ヘッダーのみを作成し、ヘッダーの下の列は作成していません。この時点から、私はテーブルの内臓で立ち往生しています。

私は、アレイがこの怪物と一緒に行く方法であると確信しています。しかし、私の弱い脳がこの仕事をすることができる唯一の方法は、より多くのクエリを持つことです。これは、これを行うための非常に間違った方法であると確信しています。

3人の生徒または15人の生徒がいた場合、それらをテーブルの列に表示することはできますが、列の行に表示することはできません。

この方法で動的列をどのようにトラバースしますか?

そして、上記の私のデモが混乱している場合、私はあなたを責めません!

4

1 に答える 1

0

さて、私はあなたのdb構造が次のようであると仮定しています:

[tbl_students]
studentid, studentname

[tbl_fruit]
fruitid, fruitname

[tbl_students_fruit]
id, fruitid, studentid, consumed

http://pastebin.com/CxPUeXR0

私はそれをテストしていませんので、頑張ってください

于 2011-02-21T17:36:58.310 に答える