Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Помогите построить многоуровневое меню, Ну или карту сайта

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Подскажите, люди добрые, третий день голову ломаю - почему не отрабатывает?
varanika
Отправлено: 09 Мая, 2015 - 10:54:46
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Май 2015  


Помог: 0 раз(а)




Имеем 1 таблицу, в ней описание всех услуг. Некоторые услуги имеют дочерние услуги, что регулируется колонкой parent_id
В сети нашлось решение, построился массив - красивый. А дальше ступор. Я противник перемешивания html и php, а также многократного echo, вот и пытаюсь сделать красиво. Но как из правильного массива сделать правильное меню типа?:

CODE (html):
скопировать код в буфер обмена
  1.  
  2. <ul><li>Услуга 1</li>
  3. <li>Услуга 2
  4. <ul><li>Услуга дочерняя 1 у 2</li>
  5. <li>Услуга дочерняя 2 у 2</li></ul>
  6. </li>
  7. </ul>
  8.  



PHP:
скопировать код в буфер обмена
  1. $sql_result = mysql_query("SELECT `article_id`, `article-name`, `article-link`, `parent_id` FROM `vip-article` ORDER BY `parent_id`, `article_id`"); // Делаем выборку всех записей из таблицы с меню
  2.  
  3.     $menu = array();
  4.     $menu_index = array();
  5.     while($row = mysql_fetch_assoc($sql_result)){
  6.         if($row['parent_id'] == 0) {
  7.             $menu[] = $row;
  8.             $menu[sizeof($menu)-1]['child'] = array();
  9.             $menu_index[$row['article_id']] = &$menu[sizeof($menu)-1];
  10.         } else {
  11.             $menu_index[$row['parent_id']]['child'][] = $row;
  12.             $menu_index[$row['article_id']] = &$menu_index[$row['parent_id']]['child'][sizeof($menu_index[$row['parent_id']]['child'])-1];
  13.         }
  14.     }


До этого момента все отлично.
Затем получается вывести подменю уже после всех меню:

PHP:
скопировать код в буфер обмена
  1.  
  2. $menuleft = "<ul class='leftmenu'>";
  3.     while($row = mysql_fetch_assoc($sql_result)){
  4.         if($row['parent_id'] == 0) {
  5.             $menuleft .= "<li><a href='".$row['article-link']."'>".$row['article-name']."</a></li>";
  6.         }
  7.         else {
  8.             $menuleft .= "<ul>";
  9.             $menuleft .= "<li><a href='".$row['article-link']."'>".$row['article-name']."</a></li>";
  10.             $menuleft .= "</ul>";
  11.         }
  12.     }
  13.     $menuleft .= "</ul>";




И таблица базы для наглядности:

CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TABLE IF NOT EXISTS `vip-article` (
  2. `article_id` int(11) NOT NULL AUTO_INCREMENT,
  3. `article-name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  4. `article-link` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  5. `article-discription` text COLLATE utf8_unicode_ci NOT NULL,
  6. `article-title` varchar(350) COLLATE utf8_unicode_ci NOT NULL,
  7. `article-key` varchar(350) COLLATE utf8_unicode_ci NOT NULL,
  8. `parent_id` int(11) NOT NULL,
  9. `article-text` text COLLATE utf8_unicode_ci NOT NULL,
  10. PRIMARY KEY (`article_id`),
  11. KEY `article-id` (`article_id`)
  12. )
 
 Top
dmaw
Отправлено: 09 Мая, 2015 - 14:00:08
Post Id



Частый гость


Покинул форум
Сообщений всего: 227
Дата рег-ции: Сент. 2009  
Откуда: Беларусь, Витебск


Помог: 0 раз(а)





Это неправильно. Работать будет только если в базе у вас дочерние категории идут строго после своего родителя.

А вопрос ваш я не понял :)
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB