2012-06-05 5 views
0

У меня есть небольшая проблема. Для начала у меня есть следующие таблицы: «группы», «страницы» и таблица подключений «подписок»Список с повторяющимися записями

Идея заключается в том, что группа (с пользователями) может подписываться на страницу. Пользователь может добавить страницу в качестве подписки на группу, в которой он находится. (Многие-ко-многим). Для информации: Пользователь может быть в нескольких группах.

В качестве части пользовательского интерфейса я хочу составить список об этом. Из каждой группы мне нужны связанные страницы. (Группа: ... Страницы: -...., -.... и т. Д.)

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 результаты
  • построить 2-мерный массив с группой, как ваш 1-й и связанных с ними страниц, как 2-й размер
  • в шаблоне HTML, возьмите массив и использовать внешний контур, чтобы пройти через ваши группы и внутреннюю петлю, чтобы получить страницы в группу

ура :)

+0

Вы имеете в виду что-то вроде этого? Пока не пробовал. $ data = array(); foreach ($ result as $ group => $ page) { $ data [$ group] [] = $ page; } – Cooleronie

+0

Да, именно это идея создания массива данных – jossif

+0

Как бы выглядели петли в шаблоне html? Я пробовал кое-что, но пока не могу понять. – Cooleronie

Смежные вопросы