在表格中显示

时间:2011-01-21 09:55:23

标签: php sql html codeigniter

我有一张这样的桌子

global_id | auto_trans | add_drivers |child_seat | booster_seat | day   
- - - - - - - -  - - - - - - - -- -- -  - - - - - - --  - - - - - - - -
   18         2          1           5              2            2
- - - - - -  - - - - - - - - - - - - - - - - - - - - -  - - - - - - -  -
   19           5          8           7              6            1 
- - - - - - - -  - - - - - -  - - -  -  - - - - -  - - - - - - - - -  -
   20           2          4           7              9            3
 - - - - - - - - -  -- -  - - - - - -  - - - - - - - -  - - - - - - -  -

我想以下面的格式显示表格中的值

 ___________|__1_|_2_ |_3 |
  |         |    |    |   |
auto_trans  | 5  | 2  | 2 |
- - - - -  - - - - -  - - -
add_drivers | 8  | 1  | 4 |
 -- -  - - -  - - - - - --
child_seat  | 7  | 5  | 7 |
 - - -  - - - - - - - - - -
booster_seat| 6  | 2  | 9 |
 - - - - - - - - - - - - - -

如何为此编写循环?

2 个答案:

答案 0 :(得分:1)

easy 答案?通过在循环中创建一个循环,该循环将按列名存储列名的值,而不是它在数据库中存储的行(如果您处于泡菜中并且需要尽快解决,请参阅下面的示例)。然而,正确答案是您可能会need to normalise your database更进一步。虽然这些值似乎是相关的,但是您以这种方式打印它们的请求告诉我您的数据库可能有点偏差。

<?php
/** Just assuming. */
$results = $db->query( 
    'SELECT auto_trans, add_drivers, child_seat, booster_seat ORDER BY auto_trans' 
)->fetchAll( );

$categorised = array( );
foreach( $results as $result ) {
    foreach( $result as $columname => $value ) {
        if( !array_key_exists( $columnname, $categorised ) ) {
            $categories[$columnname] = array( );
        }
        $categories[$columnname][] = $value;
    }
}

echo "<table>";
echo "<tr>";
foreach( $categories as $category => $values ) {
    echo "<tr>";
    echo "<th>" . $category . "</th>";
    foreach( $values as $value ) {
        echo "<td>" . $value . "</td>";
    }
    echo "</tr>";
}
echo "</table>";

答案 1 :(得分:0)

答案是pivot或交叉表,但实际的解决方案取决于您使用的数据库。

MS SqlServer 2005有一个PIVOT命令来执行此操作,但许多其他人没有。

当你使用Php我假设它的MySQL och ProstgreSQL

对于PostgreSQL,请查看:http://www.postgresql.org/docs/current/static/tablefunc.html

对于MySQL来说似乎更难,请查看:http://mysql.bigresource.com/crosstab-query-Pivot-table-1mjeYKlS.html#WAGYCZsH