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.SU » » Хранение данных, их вывод и обработка » Помогите создать функцию наполнения сложного массива из БД

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

1. дусрукп - 30 Апреля, 2014 - 14:03:06 - перейти к сообщению
CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TABLE `divs` (
  2.   `id` int(11) NOT NULL AUTO_INCREMENT,
  3.   `id_parent` int(11) NOT NULL,
  4.   `name` varchar(255) NOT NULL,
  5.   `type` varchar(22) NOT NULL,
  6.   `lang` int(1) NOT NULL DEFAULT '1',
  7.   PRIMARY KEY (`id`)
  8. ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 ;
  9.  
  10. INSERT INTO `divs` (`id`, `id_parent`, `name`, `type`, `lang`) VALUES
  11. (1, 0, 'Главная', '1', 1),
  12. (3, 0, 'Новости', '2', 1),
  13. (4, 0, 'О компании', '1', 1),
  14. (5, 0, 'Клиенты', '1', 1),
  15. (6, 0, 'Контакты', '1', 1),
  16. (10, 4, 'История', '1', 1),
  17. (11, 4, 'Учредители', '1', 1),
  18. (24, 10, 'Начало', '1', 1),
  19. (25, 10, 'Середина', '1', 1),
  20. (26, 10, 'Конец', '1', 1);


Необходимо сделать функцию, которая создает массив вида

PHP:
скопировать код в буфер обмена
  1. (
  2.       [0] => Array
  3.         (
  4.             [id] => 1
  5.             [id_parent] => 0
  6.             [name] => Главная
  7.             [type] => 1
  8.             [lang] => 1
  9.         )
  10.  
  11.       [1] => Array
  12.         (
  13.             [id] => 3
  14.             [id_parent] => 0
  15.             [name] => Новости
  16.             [type] => 1
  17.             [lang] => 1
  18.         )
  19.        
  20.       [2] => Array
  21.         (
  22.             [id] => 4
  23.             [id_parent] => 0
  24.             [name] => О компании
  25.             [type] => 1
  26.             [lang] => 1
  27.             [parent] => Array
  28.                     (
  29.                           [0] => Array
  30.                         (
  31.                               [id] => 10
  32.                             [id_parent] => 4
  33.                             [name] => История
  34.                             [type] => 1
  35.                             [lang] => 1
  36.                             [parent] => Array
  37.                                           (
  38.                                                 [0] => Array
  39.                                             (
  40.                                                   [id] => 24
  41.                                                   [id_parent] => 10
  42.                                                   [name] => Начало
  43.                                                   [type] => 1
  44.                                                   [lang] => 1
  45.                                             )
  46.                                
  47.                                             [1] => Array
  48.                                             (
  49.                                                   [id] => 25
  50.                                                   [id_parent] => 10
  51.                                                   [name] => Середина
  52.                                                   [type] => 1
  53.                                                   [lang] => 1
  54.                                             )
  55.                                            
  56.                                             [2] => Array
  57.                                             (
  58.                                                   [id] => 26
  59.                                                   [id_parent] => 10
  60.                                                   [name] => Конец
  61.                                                   [type] => 1
  62.                                                   [lang] => 1
  63.                                             )
  64.                                           )
  65.                         )
  66.            
  67.                         [1] => Array
  68.                         (
  69.                               [id] => 11
  70.                             [id_parent] => 4
  71.                             [name] => Учредители
  72.                             [type] => 1
  73.                             [lang] => 1
  74.                         )
  75.                     )
  76.                  
  77.         )
  78.         [3] => Array
  79.         (
  80.             [id] => 5
  81.             [id_parent] => 0
  82.             [name] => Контакты
  83.             [type] => 1
  84.             [lang] => 1
  85.         )
  86.  
  87. )


Притом база может быть любого уровня вложенности. Помогите, не могу сделать...
2. DlTA - 30 Апреля, 2014 - 14:34:08 - перейти к сообщению
1) получаем список/массив всех элементов
2) формируем дерево
Спойлер (Отобразить)

(Добавление)
DlTA пишет:
2) формируем дерево
там кстати есть одна не очень хорошая вещь, если будут кольца/петли при связывании, то все кольцо выпадет из дерева, и вероятность найти его потом очень мала

 

Powered by ExBB FM 1.0 RC1