
Здесь родительские категории имеют в поле '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-х лет верстаю, и стандартное выпадающее меню выглядит так:
Вам надо логика?
Если нужно все меню, на одной странице, то мне кажется что будет проще загрузить все меню в php. И потом уже работать с этими данными на php.
Вообще я уже около 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')
Создаем новый массив
Что то типа этого, ну а полученный массив очень просто перевести в то меню которое я показал. Возможно есть ошибки, я уже слабо соображаю :)
Теперь у нас есть массив одномерный
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'];
}
}
Что то типа этого, ну а полученный массив очень просто перевести в то меню которое я показал. Возможно есть ошибки, я уже слабо соображаю :)