如何使用php对数据进行分组并将其显示在表中(表中的表)?

时间:2011-09-08 02:24:17

标签: php

在表格中对数据表进行分组时遇到问题。 我已经做了,但我认为结果不符合预期。

这是示例脚本:

<?php

$conn=mysql_connect('localhost','root',''); 
mysql_select_db('things',$conn) or die ("Database Not Found"); 
$result = mysql_query("SELECT id, name, size, color FROM things ORDER BY color");  
$state = -1;
$no = 1;    

echo '<table border=1><tr><td>INDEX OF COLOR</td></tr><tr><td>';

    while($row = mysql_fetch_array( $result )) {

        if($state!= $row['color']) {
            $no = 1;
            echo '<tr bgcolor=yellow><td>'.$row['color']."</td></tr>";
            echo '<tr><td><table border=1><tr><th>no</th><th>NAME OF HERO</th></tr>';
            $state = $row['color'];
        }

        echo '<tr><td>'.$no.'</td><td>'.$row['name'].'</td></tr>';




        $no++;

    } 

    echo '</td></tr></table>';  

?>

该代码在表中生成错误的表。期望的结果是颜色组&gt;&gt;详情(表)。

我需要这样的结果:)

+-------------------+
| INDEX OF COLOR    |
+-------------------+
|RED                |
+-------------------+
| +----------+      |
| |HERO      |      |
| +----------+      |
| |ROBIN     |      |
| +----------+      |
| |INCREDIBLE|      |
| +----------+      | 
+-------------------+
|BLUE               |
+-------------------+
| +----------+      |
| |HERO      |      |
| +----------+      |
| |SPIDEY    |      |
| +----------+      |
| |SUPER MAN |      |
| +----------+      |   
| |ICE MAN   |      | 
| +----------+      |
+-------------------+
任何人都可以帮助我,为什么这个代码错了? 谢谢。 :)

1 个答案:

答案 0 :(得分:0)

我认为你的桌子比它需要的更复杂。我没有测试过这个,但试试看。

$first_color = true;
echo '<table border=1><tr><td>INDEX OF COLOR</td></tr>';

while($row = mysql_fetch_array( $result )) {

    if($state!= $row['color']) {
        if(!$first_color) {
            echo '</table></td></tr>';
            $first_color = true;
        }
        $no = 1;
        echo '<tr bgcolor=yellow><td>'.$row['color']."</td></tr>";
        echo '<tr><td><table border=1><tr><td>no</td><td>NAME OF HERO</td></tr>';
        $state = $row['color'];
    }

    echo '<tr><td>'.$no.'</td><td>'.$row['name'].'</td></tr>';




    $no++;

} 

echo '</table></td></tr></table>';