2013-07-27 70 views
-2

我想使用PHP在html表格中將動態mysql垂直數據顯示爲水平。而我的表像如何使用php顯示動態mysql垂直數據爲水平使用php

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

你可以請幫助我。先謝謝你。

+0

第一個和第二個表之間的關係究竟是什麼?數據如何相關? –

+0

最好使用交叉表查詢。谷歌的'php交叉表查詢'有很多網站會告訴你如何做到這一點(我已經失去了鏈接到我最喜歡的網站)。 – jeff

+0

什麼是角色和什麼是權限,你嘗試過什麼? –

回答

0

試試這個:

SELECT 
roleID AS role, 
GROUP_CONCAT(DISTINCT permID ORDER BY permID ASC SEPARATOR '|') AS permissions 
FROM role_perm 
GROUP BY roleID 
ORDER BY roleID 
+0

感謝您的回覆......但我想要顯示每個permID在表中的單獨列。 –

+0

感謝您的幫助,我得到了解決方案...再次感謝。 –

+0

那麼redreggae的解決方案就是你要找的那個?它似乎不是。如果沒有,請發佈您找到的解決方案,以幫助其他人尋求類似問題的幫助。 – smalone

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); 
+1

除非你會使用現代的方法! – Strawberry

+0

@Strawberry:很明顯......但我想這個復古風格是普遍認可和可讀的:-) – Webberig

+0

@Webberig:也許很熟悉,但我們確實不需要更多的代碼片斷,因爲互聯網上棄用的功能。清理你的代碼以使用正確的庫。 – siride