[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Создание меню для категорий
JetSuit
Ситуация такая - имеем таблицу:
user posted image
Здесь родительские категории имеют в поле 'parent_cat_id' значение 0, а подкатегории 'id' родительской категории.
Хочу сформировать динамически меню для навигации вида

<ul>
<li>
Спортивное оборудование</li>
<li>
<ul>
<li>
Скамьи и стойки</li>
<li>
Грузоблочные</li>
.......
</ul>
</li>

.........
</ul>


Вот мой пример, но что то повторить такую структуру HTML никак не получается

function creatMenu(){
$res = mysqlQuery("SELECT *
FROM `"
.IRB_DBPREFIX . "categories` "
);

$menu = "<ul>\n";
while($row = mysql_fetch_assoc($res))
{
if($row['parent_cat_id'] == 0)
$menu .= "<li><a style=\"color:#FF0000;\" href=\"" .href('cat='.$row['id']) ."\">" . $row['cat_name'] . "</a></li>";
else
$menu .= "<li><a href=\"" .href('cat='.$row['id']) ."\">" . $row['cat_name'] . "</a></li>";

}
return $menu;


Возможно есть другие пути решения данной задачи, подскажите пожалуйста.



Спустя 1 час, 10 минут, 46 секунд (26.03.2011 - 16:48) JetSuit написал(а):
Или если сделать структуру HTML такой

<ul>
<li>
<a
style="color:#FF0000;" href="http://rodim.ua/catalog/read/1">Спортивное оборудование</a></li>
<ul>
<li>
<a
href="http://rodim.ua/catalog/read/2">Скамьи и стойки</a></li>
</ul>
<ul>
<li>
<a
href="http://rodim.ua/catalog/read/3">На свободных весах</a></li>
</ul>
<ul>
<li>
<a
href="http://rodim.ua/catalog/read/4">Грузоблочные</a></li>

</ul>
<ul>
<li>
<a
href="http://rodim.ua/catalog/read/5">Для дома</a></li>
</ul>
<li>
<a
style="color:#FF0000;" href="http://rodim.ua/catalog/read/6">Торговое оборудование</a></li>


Будет ли она правильной ?

Спустя 20 часов, 4 минуты, 14 секунд (27.03.2011 - 11:52) cccr85 написал(а):
Не понятно что Вам надо. Вам надо html?

Вообще я уже около 2-х лет верстаю, и стандартное выпадающее меню выглядит так:


<ul>
<li><a
href="" title="">Пункт меню 1</a></li>
<li>
<a
href="" title="">Пункт меню 2</a>
<ul>
<li><a
href="" title="">Вложенный пункт меню 1</a></li>
<li><a
href="" title="">Вложенный пункт меню 2</a></li>
</ul>
</li>
<li>
<a
href="" title="">Пункт меню 3</a>
<ul>
<li><a
href="" title="">Вложенный пункт меню 1</a></li>
<li><a
href="" title="">Вложенный пункт меню 2</a></li>
</ul>
</li>
</ul>



Вам надо логика?
Если нужно все меню, на одной странице, то мне кажется что будет проще загрузить все меню в php. И потом уже работать с этими данными на php.

Спустя 3 часа, 17 минут, 47 секунд (27.03.2011 - 15:10) JetSuit написал(а):
У меня меню формируеться динамически , и я никак в коде не могу повторить приведенную вами структуру. Мне хотелось бы изменить функцию формирования меню "createMenu()" такм образом чтобы она формировала именно такую структуру:(есть выход сделать обычное меню не выпадающее , но все же интресно как можно сформировать выпадающее меню )

<ul>
<li><a
href="" title="">Пункт меню 1</a></li>
<li>
<a
href="" title="">Пункт меню 2</a>
<ul>
<li><a
href="" title="">Вложенный пункт меню 1</a></li>
<li><a
href="" title="">Вложенный пункт меню 2</a></li>
</ul>
</li>
<li>
<a
href="" title="">Пункт меню 3</a>
<ul>
<li><a
href="" title="">Вложенный пункт меню 1</a></li>
<li><a
href="" title="">Вложенный пункт меню 2</a></li>
</ul>
</li>
</ul>


Спустя 24 минуты, 34 секунды (27.03.2011 - 15:34) cccr85 написал(а):
Получили из базы все пункты меню, можно даже все активные пункты меню.

Теперь у нас есть массив одномерный

array('id', 'name', 'parrent_id')

Создаем новый массив



$arr[]= array('id', 'name', 'parrent_id');
$arr[]= array('id', 'name', 'parrent_id');
$arr[]= array('id', 'name', 'parrent_id');
$arr_new = array();

foreach ($arr AS $k => $v) {
if ($v['parrent_id'] == 0) {
$arr_new[ $v['id'] ]['name'] = $v['name'];
} else {
$arr_new[ $v['parrent_id'] ]['parent'][] = $v['name'];
}
}



Что то типа этого, ну а полученный массив очень просто перевести в то меню которое я показал. Возможно есть ошибки, я уже слабо соображаю :)
Быстрый ответ:

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