[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Получение массива меню из базы.
ZeroCool
Здравствуйте, задача получить массив из БД для 3-ех уровневого меню
Есть мини-таблица БД скрин - http://hkar.ru/yhjH

Код получения массива

function catalog(){
$query ="SELECT * FROM brands ORDER BY parent_id, brand_name";
$res = mysql_query($query) or die (mysql_query());

//Массив категорий
$cat = array();
while($row = mysql_fetch_assoc($res)){
if (!$row['parent_id']){
$cat[$row['brand_id']] [] = $row['brand_name'];
}else{
$cat[$row['parent_id']]['sub'][$row['brand_id']] = $row['brand_name'];
}
}
return $cat;
}


Что получилось:


Array
(
[1] => Array
(
[0] => Alcatel
[sub] => Array
(
[6] => Раскладушки
)

)

[3] => Array
(
[0] => LG
[sub] => Array
(
[7] => Моноблок
[5] => Сенсоры
[4] => Слайдеры
)

)

[11] => Array
(
[0] => Nokia
[sub] => Array
(
[14] => Моноблок
)

)

[6] => Array
(
[sub] => Array
(
[16] => testovay
)

)

)


Нужно "testovay" сделать её дочерним "Раскладушки"

Чтобы получилось


Array
(
[1] => Array
(
[0] => Alcatel
[sub] => Array
(
[6] => Раскладушки
[sub-t] => Array
(
[16] => testovay
)
)


)

[3] => Array
(
[0] => LG
[sub] => Array
(
[7] => Моноблок
[5] => Сенсоры
[4] => Слайдеры
)

)

[11] => Array
(
[0] => Nokia
[sub] => Array
(
[14] => Моноблок
)

)



)


chee
ZeroCool, сделал бы с помощью рекурсии и не парился

<?php
function
catalog(){
$query ="SELECT * FROM brands ORDER BY parent_id, brand_name";
$res = mysql_query($query) or die (mysql_query());

//Массив категорий
$cat = array();
while($row = mysql_fetch_assoc($res)){
$cat[$row['parent_id']][$row['brand_id']] = $row;
}
return $cat;
}

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

ну типа


$items = catalog();

function buildMenu($items, $item)
{
if (empty($items[$item])) {
return;
} else {
echo '<ul>';
foreach ($items[$item] as $key => $value) {
echo '<li>' . $value['brand_name'] . '</li>';
buildMenu($items, $key);
}
echo '</ul>';
}
}




_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.