Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.10.2016, 16:54   #1
a10nan
Пользователь
 
Регистрация: 21.08.2009
Сообщений: 15
По умолчанию PHP меню с вложениями

Добрый день уважаемые форумчане. Нужно сделать для сайта многомерное меню (то есть где каждый пункт меню может иметь своё подменю)

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

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

За ранее спасибо.
Errare humanum est! - Человеку свойственно ошибаться!
a10nan вне форума Ответить с цитированием
Старый 18.10.2016, 17:02   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

пример меню есть? Меню выводится средствами HTML/CSS или JS ?
дайте пример вашего HTML файла с вашим меню (ручками заполните пару-тройку пунктов, обязательно с подменю).
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.10.2016, 17:02   #3
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

Запросом выбираете ВСЕ элементы меню, с помощью PHP рекурсивно рисуете меню

P.S Заранее - пишется слитно (для расширения кругозора)
ADSoft вне форума Ответить с цитированием
Старый 18.10.2016, 19:23   #4
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Get all child, grandchild etc nodes under parent using php with mysql query results
Andkorol вне форума Ответить с цитированием
Старый 19.10.2016, 03:02   #5
a10nan
Пользователь
 
Регистрация: 21.08.2009
Сообщений: 15
По умолчанию

Всем огромное спасибо, особенно Andkorol.
Errare humanum est! - Человеку свойственно ошибаться!
a10nan вне форума Ответить с цитированием
Старый 19.10.2016, 03:26   #6
predefined
Форумчанин
 
Регистрация: 01.08.2016
Сообщений: 182
По умолчанию

Цитата:
Сообщение от a10nan Посмотреть сообщение
Подскажите пожалуйста как сделать запрос чтоб получить многомерный массив.
sql-запрос тут особо не важен, отсортировать им записи в нужном порядке скорее всего не удастся, и придётся джойнить таблицу к самой себе.

Выбираете всё из таблицы и строите структура многомерного массива, которая вам нужна. Как вариант, можно так:
PHP код:
$res mysql_query('SELECT * FROM `таблица_меню` ORDER BY parent_id=0 DESC');    // Сначала - основные пункты меню, потом - дочерние
while ($row mysql_fetch_array($resMYSQL_ASSOC)) {
  
$id $row['id'];
  
$parent_id $row['parent_id'];
  
$name $row['name'];    // Имя поля с названием пункта меню
  
$arr[$id] = $name;
  if (
$parent_id ==0)  $menu[$name] = array();
  else 
$menu$arr[$parent_id] ][] = $name;
  }

print_r($menu); 
Будет многомерный массив с ключами меню верхнего уровня, а в нём - массив его субменю:

Код:
[пункт меню] => Array  (
            [0] => его субменю1
            [1] => его субменю2
            [2] => его субменю3
        )

[пункт меню2] => Array  (
            [0] => его субменю1
            [1] => его субменю2
            [2] => его субменю3
            [3] => его субменю4
        )

Только скорее всего рисовать меню по такому массиву будет не удобно - кроме "пункт меню2" или "его субменю1" надо хранить ссылку на соответствующую страницу.
Поэтому, как сказал Serge_Bliznykov - давайте больше конкретики.

Последний раз редактировалось predefined; 19.10.2016 в 03:31.
predefined вне форума Ответить с цитированием
Старый 19.10.2016, 07:52   #7
a10nan
Пользователь
 
Регистрация: 21.08.2009
Сообщений: 15
По умолчанию

2 predefined, спасибо вам за ответ, но как вы могли уже заметить вопрос решён =)

Кроме того подход который вы предложили имеет один изъян, это ограниченность использования, то есть структура массива за ранее должна быть известна, если появится ещё пара-тройка уровней вложений то придётся ковырять опять код, именно по этой причине я такой вариант сразу отбросил.

Но всё равно, огромное спасибо за вашу отзывчивость.
Errare humanum est! - Человеку свойственно ошибаться!
a10nan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с вложениями Access через VBA Rinsvid Microsoft Office Access 3 10.03.2016 12:22
PHP массив и меню kettanaito PHP 2 07.03.2013 00:28
Двухуровневое меню на php и mysql Hardander PHP 1 27.02.2013 16:29
Проблема с вложениями в почте. like_cloud Работа с сетью в Delphi 3 28.01.2010 12:31