|
|
|
| Есть дерево в массиве
$out[][0] = id_menu;
$out[][1] = name_menu;
$out[][2] = level_menu;
|
Обхожу его так
$i = 0;
foreach ($out AS $index => $val)
{
echo $out[$i][1]."<br>";
$i++;
}
|
Вопрос!!! Помогите мне вывести его в HTML испоьзую теги формирования списка... Моё дерево не ограничено по вложениям :)
<ul>
<li><a href="link">Вебмастеру</a></li>
<li><a href="link">О сайте</a></li>
<li><a href="link">Скрипты</a></li>
<li><a href="link">Новости латвии</a></li>
<li><a href="link">Хостинг</a></li>
<li><a href="link">Веб студии</a></li>
<li><a href="link">О сайте</a></li>
<li><a href="link">Скрипты</a></li>
<li><a href="link">Новости латвии</a></li>
<li><a href="link">Хостинг</a></li>
<li><a href="link">Веб студии</a></li>
<li><a href="link">О сайте</a></li>
<ul>
<li><a href="link">Скрипты</a></li>
<ul>
<li><a href="link">Dreamweaver скачать</a></li>
<ul>
<li><a href="link"><strong>PHP-Nuke</strong></a></li>
</ul>
</ul>
</ul>
<li><a href="link">Скрипты</a></li>
<li><a href="link">Новости латвии</a></li>
<li><a href="link">Хостинг</a></li>
<li><a href="link">Веб студии</a></li>
</ul>
|
| |
|
|
|
|
|
|
|
для: boom.olezka
(28.09.2007 в 01:49)
| |
<?php
echo "<ul>";
$i = 0;
foreach ($out AS $index => $val)
{
echo "<li><a href=\"link\">$out[$i][1]</a></li>";
$i++;
}
echo "</ul>";
?>
|
| |
|
|
|
|
|
|
|
для: zeeg
(28.09.2007 в 07:02)
| | а где в этом коде создаются уровни? Здесь получаюется из всего меню один уровень... | |
|
|
|
|
|
|
|
для: boom.olezka
(28.09.2007 в 14:29)
| | А где у вас уровни?
$out[][0] = id_menu;
$out[][1] = name_menu;
$out[][2] = level_menu;
|
Обычно так:
parent id
0 1 //корень самый верхний уровень, нет родителя
1 2 //родитель уровеня id1 - первое вложение для id1
2 3 //родитель уровеня id2 - второе вложение для id1
//и т.д.
|
Если ваш level_menu содержит цифру указывающую на смещение уровня (вложение), ну проверяйте ее в предложенном цикле и обрмляйте в ul. | |
|
|
|
|
|
|
|
для: sim5
(28.09.2007 в 14:47)
| | А можно пример, кода... у меня у самого не получилось... Всё не так... | |
|
|
|
|
|
|
|
для: boom.olezka
(28.09.2007 в 15:17)
| | Кода чего, к вашим данным или что я привел? Ищите в этом разделе, вроде недавно такое обсуждалось, вот и будет вам пример. | |
|
|
|
|
|
|
|
для: sim5
(28.09.2007 в 15:23)
| | Конечно к моим :) Меня интересует вопрос, вообще это возможно? :) с такой структурой массива как у меня? | |
|
|
|
|
|
|
|
для: boom.olezka
(28.09.2007 в 16:04)
| | По-моему, нет. И вот почему.
Допустим, вы делаете дерево:
Главная
Не главная
Кухня
____плюшки
____ватрушки
Пивная
____пивасик
____выпивасик
Мыло
В этом случае, у вас у плюшек с ватрушками и пивасика с выпивасиком будет одинаковый level, а расположены они под разными родителями. Нужно указывать не уровень, а именно родителя. А потом рекурсивно выводить. | |
|
|
|
|
|
|
|
для: boom.olezka
(28.09.2007 в 01:49)
| | Спасибо, я попробую... Вопрос стоял именно во моим данным, я понимаю что можно подругому :) Но подругому, уже в другом топике :) | |
|
|
|
|
|
|
|
для: boom.olezka
(28.09.2007 в 16:32)
| | Всё невозможное возможно :)
Вот такой вариант работает верно :)
echo "<ul>";
$i = 0;
$old_level = 0;
foreach ($out AS $index => $val)
{
if ($old_level != $out[$i][2])
{
if ($old_level < $out[$i][2]) echo "<ul>";
if ($old_level > $out[$i][2])
{
$count_ul = $old_level - $out[$i][2];
$j = 1;
While ($j <= $count_ul)
{
echo "</ul>";
$j++;
}
}
}
echo "<li><a href=\"?id=".$out[$i][0]."\">".$out[$i][1]."</a></li>";
if ($old_level != $out[$i][2])
{
}
$old_level = $out[$i][2];
$i++;
}
echo "</ul>";
|
| |
|
|
|