2012-06-05 4 views
0

사소한 문제가 있습니다. 먼저 '그룹', '페이지'및 교차점 테이블 '서브 스크립 션'중복 항목이있는 목록

다음 표가 있습니다. 사용자가있는 그룹이 페이지를 서브 그룹화 할 수 있다는 개념입니다. 사용자는 자신이 속한 그룹에 대한 구독으로 페이지를 추가 할 수 있습니다 (many-to-many). 정보 : 사용자는 여러 그룹으로 구성 될 수 있습니다.

UI의 일부로 그 목록을 만들고 싶습니다. 모든 그룹에서 관련 페이지를 원합니다. 예 : (그룹 : ... 페이지 : -...., -.... | 그룹 : ... 페이지 : -...., -.... 등)

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 솔루션이 필요하다. (젠드 프레임 워크를 사용하고 있지만 젠드에서 원하는 트릭을 찾을 수 없습니다)

또는 모든 그룹에 대해 단일 쿼리를 수행해야합니까? 그래도 피하고 싶습니다 ..

나는이 세상에서 새로운 MySQL과 PHP이므로 모든 도움이 필요하다! 감사. :)

+0

. : 그래서 모든 그룹에 해당 페이지를 제공하고 싶습니까? – sephoy08

+0

도메인 모델 및 데이터 맵퍼에 대해 배울 때가 된 것 같습니다. 이것은 내가 대답해야했던 것과 같은 종류의 질문이며 모델과 매퍼가 적합하다고 생각됩니다. http://phpmaster.com/building-a-domain-model/ 및 http://phpmaster.com/integrating-the-data-mappers/ ... 행운을 빌어 요 – RockyFord

답변

1

은 매우 기본적인 구현은 다음과 같다 :

  • mysql을 통해 루프
  • 이 1 위 그룹과 2 차원과 관련된 페이지와 2 차원 배열을 구축 결과
  • 당신의 HTML 템플릿에서, 배열을 가지고 그룹 당 페이지

환호 :)

0을 얻을 수 있도록 그룹을 통해 이동하는 외부 루프 및 내부 루프를 사용하여
+0

이런 뜻입니까? 아직 시도하지 않았습니다. $ data = array(); foreach ($ 결과는 $ group => $ 페이지) { $ data [$ group] [] = $ page; } – Cooleronie

+0

예, 데이터 배열을 만드는 방법에 대한 아이디어입니다 – jossif

+0

html 템플릿의 루프는 어떻게 생겼습니까? 나는 몇 가지 시도했지만 아직 그것을 알아낼 수 없습니다. – Cooleronie

관련 문제