2013-08-26 34 views
0

請幫我解決這個問題。 我想要構建一個多級菜單,所以我想通過一個關聯數組,在smarty模板中使用foreach循環進行迭代。 首先,我有這樣的MySQL輸出: enter image description here如何從關聯數組構建多級菜單。

現在,我嘗試從它那裏得到一個關聯數組,所以我試圖 fetchAll(PDO::FETCH_ASSOC),但由於列名是一樣的,它給了我從右邊列的值:

Array ([0] => Array ([id] => 7 [name] => Beta 1-3 glucan) [1] => Array ([id] => 8 [name] => Okinawa Fucoidan) 

請如果您有任何想法如何處理此表以獲得多維菜單,請告訴我。

謝謝。

+0

我假設你有'JOIN'表,並且在它們中都有'id'和'name'(或者你加入了同一張表)。你需要做的是在你的查詢中使用'AS',例如:而不是'SELECT * FROM table JOIN表ON ...'寫'SELECT t1.id AS level1_id,t1.name AS level1_name,t2。 id AS level2_id,t2.name AS level2_name FROM table t1 JOIN表t2 ...'。該解決方案將爲您提供每行4個不同的字段名稱(level1_id,level1_name,level2_id,level2_name) –

回答

1

在查詢中使用FETCH_NUM或創建別名。

0

我假設你JOIN表,並在他們兩個你有idname(或你加入同一張表)。你需要做的是在你的查詢中使用AS

例如:

相反的:SELECT * FROM table JOIN table ON [...]

寫:SELECT t1.id AS level1_id, t1.name AS level1_name, t2.id AS level2_id, t2.name AS level2_name FROM table t1 JOIN table t2 ON [...]

該解決方案將爲您提供每行中4個不同的字段名稱(level1_id,level1_name,level2_id,level2_name)。