Как получить многомерный массив из базы данных? - PullRequest
0 голосов
/ 21 февраля 2012

Я знаю, что название не совсем то, о чем идет речь, но терпите меня.Я не знаю, как еще один заголовок для этого.

Хорошо, посмотрите, это моя ситуация.Я строю небольшую систему CMS (для себя и учиться у нее).Я хочу, чтобы страницы внутри CMS были перечислены и упорядочены по категориям.Это будет выглядеть примерно так:

Webpages
- Home
  -- homepage(this is the web page itself)
- News
  -- Latest news
  -- Archive

эта система будет означать, что у меня будут подкатегории.

В базе данных я создал таблицу:

| ID | Parent_ID |   Name   |   Lable   | Order|
  1        1       Webpages    webpages     1
  2        1       Home        home         1
  3        1       News        news         2

Как вы можете видеть здесь, основная категория - это категория веб-страниц, а главная страница и новости - ее подкатегории.И эти две категории упорядочены так, что категория «Домой» сначала, а затем «Новости».

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

Я думаю, вы можете видеть, насколько глубоко это может зайти, это будет означать (я думаю), что в конечном итоге будет много запросов, которыебудет выполняться для каждой подкатегории.

Так что мой вопрос: есть ли способ получить все подкатегории одновременно в правильном порядке в одном запросе руды 2.

, еслиу вас есть ответ, пожалуйста, дайте мне знать.

спасибо

1 Ответ

0 голосов
/ 21 февраля 2012

При написании запроса вам нужно будет использовать предложение ORDER BY. Для этого конкретного примера вам нужно будет ORDER BY Parent_ID, Order. Это вернет отсортированные по Parent_ID, а затем отсортированные по Order.

Затем можно использовать mysql_fetch_assoc () для разбора результирующего набора в ассоциативный массив.

Поскольку у вас будет несколько уровней иерархии, вам придется циклически просматривать набор результатов, как только сохраните его в ассоциативном массиве, состоящем из структуры иерархии.

Этот массив затем можно использовать для отображения соответствующей иерархии навигации на странице.

...