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
Форумы портала PHP.SU :: Версия для печати :: Многоуровневое меню php+mysql - PHP
Форумы портала PHP.SU » » Вопросы новичков » Многоуровневое меню php+mysql - PHP

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

1. ntym - 14 Июля, 2016 - 17:16:13 - перейти к сообщению
День добрый.
Прежде чем начнете писать мол пользуйся поиском, честно долго искал, но не нашел такого варианта как мне нужно, а нужно мне следующее:


1. Категория
1.1 Подкатегория
1.1.1 Подкатегория
1.1.1.1 Подкатегория




Каждая из них берется из свой таблицы, для примера:
Название основной таблицы: stock_cat
cat_id,
cat_name

Подкатегория:

Название таблицы: stock_cat2
cat_id
sab_cat2_id,
cat2_name

Подкатегория:

Название таблицы: stock_cat3
cat_id2
sab_cat3_id,
cat3_name

Подкатегория:

Название таблицы: stock_cat4
cat_id3
sab_cat4_id,
cat4_name

Получается вот такое:
Системный блок > Оперативная память > DDR3 > 4Gb


Не могу сообразить как организовать и вывести это все, помогите пожалуйста. Заранее спасибо!
2. ntym - 21 Июля, 2016 - 14:23:29 - перейти к сообщению
Не получилось решить вопрос таки образом, как была поставлена задача. Вопрос был решен выборкой из одной таблицы
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. /**
  4.  * PHP4
  5.  * Постоение дерева (меню неограниченной вложености)
  6.  * Метод читает из таблицы category все сточки, и
  7.  * возвращает двумерный массив, в котором первый ключ - id родителя
  8.  * категории (parent_id)
  9.  * @return Array
  10.  */
  11. function getCategory() {
  12.     $query = mysql_query("SELECT * FROM `shop_cat`");
  13.     $result = array();
  14.     while ($row = mysql_fetch_array($query)) {
  15.         $result[$row["parent_id"]][] = $row;
  16.     }
  17.     return $result;
  18. }
  19.  
  20. //В переменную $category_arr записываем все категории
  21. $category_arr = getCategory();
  22.  
  23. /**
  24.  * Вывод дерева
  25.  * @param Integer $parent_id - id-родителя
  26.  * @param Integer $level - уровень вложености
  27.  */
  28.  
  29. function outTree($parent_id, $level) {
  30.     global $category_arr; //Делаем переменную $category_arr видимой в функции
  31.     if (isset($category_arr[$parent_id])) { //Если категория с таким parent_id существует
  32.        
  33.         foreach ($category_arr[$parent_id] as $value) { //Обходим
  34.             /**
  35.              * Выводим категорию
  36.              *  $level * 25 - отступ, $level - хранит текущий уровень вложености (0,1,2..)
  37.              */
  38.                  
  39.             echo "<ul class='nav nav-pills nav-stacked' ><li ><a href='#' style='padding-left:" . ($level * 15) . "px;'>" . $value["parent_id"] . " | " . $value["cat_name"] . "</a></li></ul>";
  40.             $level = $level + 1; //Увеличиваем уровень вложености
  41.             //Рекурсивно вызываем эту же функцию, но с новым $parent_id и $level
  42.             outTree($value["cat_id"], $level);
  43.             $level = $level - 1; //Уменьшаем уровень вложености
  44.              
  45.         }
  46.     }
  47. }
  48.  
  49. outTree(0, 0);
  50.  
  51. ?>
  52.  


Внимание вопрос,может ктото подсказать, как этот код, совместить с css и реализовать меню гармошку ???
3. Faraon-san - 22 Июля, 2016 - 10:44:56 - перейти к сообщению

 

Powered by ExBB FM 1.0 RC1