-2

PHPを使用して、動的なmysql垂直データを水平にhtmlテーブルに表示したいと考えています。そして、私のテーブルは

mysql> select * from role_perm;

-------------------------------------------
| id  | userID  | roleID | permID | value | 
--------------- ---------------------------
| 1   |   2     |   1    |   1    | 1     |
|------------------------------------------
| 2   |   2     |   1    |   2    | 0     |
|------------------------------------------
| 3   |   2     |   1    |   3    | 0     |
|------------------------------------------
| 4   |   2     |   2    |   4    | 0     |
-------------------------------------------
| 5   |   2     |   2    |   1    | 1     |
|------------------------------------------
| 6   |   2     |   2    |   2    | 1     |
|------------------------------------------
| 7   |   2    |   2    |   3    | 0     |
|------------------------------------------
| 8   |   2     |   2    |   4    | 1     |
-------------------------------------------
| 9   |   5     |   1    |   1    | 1     |
|------------------------------------------
| 10  |   5     |   1    |   2    | 0     |
|------------------------------------------
| 11  |   5     |   1    |   3    | 0     |
|------------------------------------------
| 12  |   5     |   1    |   4    | 0     |
-------------------------------------------

等々...

そして、私は次のようなhtmlテーブルに表示したい

----------------------------
|  role | permissions      |
----------------------------
|   1   |   1 | 2 | 3 | 4  |
---------------------------- 
|   2   |   1 | 2 | 3 | 4  |
----------------------------
|   3   |   1 | 2 | 3 | 4  |
-----------------------------
|   4   |   1 | 2 | 3 | 4  |
----------------------------

助けていただけませんか。前もって感謝します。

4

2 に答える 2

0

気の利いたMySQLクエリでもこれを行うことができると思います(おそらくパフォーマンスが向上するでしょう)が、私はSQLが得意ではないので、PHPソリューションは次のとおりです。

$arrRoles = array();
while ($row = mysql_fetch_assoc($result)) {
   if (!isset($arrRoles[$row['roleID']])) {
       $arrRoles[$row['roleID']] = array();
   }
   $arrRoles[$row['roleID']][$row['permID']] = $row['value'];
}
var_dump($arrRoles);
于 2013-07-27T14:49:44.157 に答える