Intereting Posts
Как отформатировать PHP-файлы с разметкой HTML в Visual Studio Code? Являются ли числовые и ассоциативные массивы в PHP двумя разными способами? PHP $ _SERVER vs. $ _SERVER , правильно ли я понимаю страницы man? Symfony3 как хранить роли пользователя в базе данных В PHP, как PDO защищает от SQL-инъекций? Как работают подготовленные заявления? Есть ли встроенная функция или плагин для обработки форматирования даты в JavaScript? Создание сводного отчета о полосе Управление кешем и истечение заголовка для PHP PHP добавляет кавычки в массив для json_decode PHP-почта не работает по какой-либо причине вставить запрос с использованием приема петли foreach. Ошибка неактивности: вызов функции-члена execute () в булевом Правило .htaccess для многоязычного сайта PHP Неустранимая ошибка: «Swift_TransportException» с сообщением «Не удалось выполнить проверку подлинности на SMTP-сервере Сохранить значения флажка в Yii gridview pagination Как определить часовой пояс пользователя?

Многоуровневое меню из записей базы данных

Мне нужна помощь с PHP. У меня многоуровневое css-меню, которое отлично работает, но теперь я хочу сгенерировать в соответствии с записями из базы данных.

Меню Код:

<div id="page-wrap"> <ul class="dropdown"> <li><a href="#">Link 1</a> </li> <li><a href="#">Link 2</a> </li> <li><a href="#">Link 3</a> </li> <li><a href="#">Link 4</a> <ul class="sub_menu"> <li><a href="#">Link 4 - 1</a></li> <li><a href="#">Link 4 - 2</a></li> <li><a href="#">Link 4 - 3</a></li> </ul> </li> <li><a href="#">Link 5</a></li> <li><a href="#">Link 6</a> </li> </ul> </div> 

В базе данных каждая запись имеет поле main_manu, которое делает его главной ссылкой, если значением этого поля является « Да» , а если значение « Нет», то в нем есть другое поле ( sub_menu ), в котором указано родительское меню, в котором эта ссылка должна быть размещены.! Смотрите скриншот. Поля БД

Итак, теперь я не знаю, как сделать часть php, которая получит записи, и если значение main_menu будет да, оно создаст меню верхнего уровня, и если значение main_menu не будет, оно создаст под-уровневое меню в соответствии со значением поля sub_menu .

большое спасибо

ОБНОВИТЬ

Это код, который у меня есть до сих пор, и он работает. Было бы неплохо, если бы я мог использовать один запрос вместо нескольких вложенных запросов.

 <div id='page-wrap'> <ul class='dropdown'> <? $sql_menu = "SELECT * FROM content WHERE visible = '1' and main_menu='yes' "; $result_menu = mysql_query($sql_menu); while($row = mysql_fetch_assoc($result_menu)) { $id=$row['id']; $menu_top=$row['menu_name']; $menu_url=$row['menu_url']; print "<li><a href='$menu_url'>$menu_top</a>"; $sql_sub = "SELECT * FROM content WHERE sub_menu = '$menu_url' "; $result_sub = mysql_query($sql_sub); $num_rows = mysql_num_rows($result_sub); while($row = mysql_fetch_assoc($result_sub)) { $id=$row['id']; $menu_sub=$row['menu_name']; $sub_url=$row['menu_url']; If ($num_rows != 0) { print "<ul class='sub_menu'> <li><a href='$sub_url'>$menu_sub</a></li> </ul>"; } } print "</li>"; } ?> </ul> </div> 

Solutions Collecting From Web of "Многоуровневое меню из записей базы данных"

Код для этого будет примерно следующим: (Это нужно будет изменить так, как вы взаимодействуете с базой данных и т. Д.):

 // Here we do a query to get all the rows from the table $db_result = db_execute_query('SELECT * FROM `menu_table` ORDER BY `order_no`'); // Here we take the rows and put it into a structured array $items = array(); $hierarchy = array('' => array()); while ($row = db_fetch_row($db_result)) { $items[$row['menu_name']] = $row['menu_name_en']; if ($row['main_menu'] == 'yes') { $hierarchy[''][] = $row['menu_name']; } else { if (!isset($hierarchy[$row['sub_menu']]) { $hierarchy[$row['sub_menu']] = array(); } $hierarchy[$row['sub_menu']][] = $row['menu_name']; } } // Here we define a recursive function to run through our $hierarchy array; function show_menu($name = '') { if (isset($hierarchy[$name])) { if ($name == '') { echo '<ul class="dropdown">'; } else { echo '<ul class="sub_menu">'; } foreach ($hierarchy[$name] as $sub) { echo '<li><a href="#">' . $items[$sub] . '</a>'; show_menu($sub); echo '</li>'; } echo '</ul>'; } } // Here we execute the recursive function on the main menu show_menu(''); 

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

Также обратите внимание, что ваша таблица db может быть изменена, чтобы сделать этот код более простым

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

http://board.phpbuilder.com/showthread.php?10337808-how-to-create-menu-submenu-subsubmenu-using-php-mysql

http://www.sitepoint.com/forums/showthread.php?718237-how-to-create-dynamic-menu-and-submenu-using-php-and-mysql