2012-06-05 52 views
0

我遇到了一個小問題。首先,我有以下表格:「組」,「頁面」和聯結表「附屬」帶有重複條目的列表

這個想法背後是一個組(包括用戶)可以分派到一個頁面。用戶可以將頁面添加爲他所在組的訂閱(多對多)。有關信息:用戶可以處於多個組中。

作爲用戶界面的一部分,我想列出一個相關列表。從每個組我都想要關聯的頁面。例如:(Group:... Pages:-....,-.... | Group:... Pages:-....,-....等)

SQL查詢是不是一個問題:

SELECT Groups.name, pages.name, pages.id 
FROM Groups 
JOIN subscriptions ON groups.id = subscriptions.group_id 
JOIN pages ON subscriptions.page_id = pages.id 
WHERE groups.id IN ('1', '2') // de values 1 & 2 zijn voorbeelden en stellen de groepen id's voor waarin de huidige gebruiker zit. 

結果將,例如,像這樣:

group name ---- page name ---- page id 
group1 -------- page1 --------- 1 
group1 -------- page2 --------- 2 
group2 -------- page1 --------- 1 

我的問題是;我怎樣才能得到一個(HTML)名單,我得到一個單一的組名和所有關聯的頁面到該組? (就像我之前提到的例子)。我需要一個php解決方案。 (我正在使用Zend框架,但我無法在Zend中找到解決方案,我想要這樣做)

或者必須爲每個組執行單個查詢嗎?我想盡量避免..

我是mysql和php這個世界的新手,所以每一個幫助都值得分配!謝謝。 :)

+0

。:所以你想獲得每個組可用的頁面? – sephoy08

+0

聽起來像是時候瞭解領域模型和數據映射器。這是我必須回答的同一類問題,模型和映射器似乎適合。 http://phpmaster.com/building-a-domain-model/和http://phpmaster.com/integrating-the-data-mappers/ ...好運 – RockyFord

回答

1

一個非常基本的實現將是如下:

  • 遍歷MySQL的結果
  • 建立與組作爲您的第一和相關的網頁作爲第二維二維數組
  • 在你的HTML模板,把你的陣列和使用外循環要經過你的團體和一個內部循環,讓每組頁

歡呼:)

+0

你的意思是這樣的?儘管如此,還沒有嘗試過。 $ data = array(); ($ result爲$ group => $ page){ $ data [$ group] [] = $ page; } – Cooleronie

+0

是的,這就是如何構建數據數組的想法 – jossif

+0

html模板中的循環如何看起來像?我嘗試了一些東西,但還沒弄明白。 – Cooleronie