|
|
|
| Всем привет!
Имеется таблица страниц:
id, parent, name
1, 0, Главная
2, 1, Новости
3, 1, О компании
4, 3, История
5, 3, Персонал
6, 3, Вакансии
|
Подскажите как лучше реализовать функцию для получения массива страниц сайта (карты сайта), таким образом:
[id]=1
[name]=Главная
[pages]=
- [id=2]
[name]=Новости
- [id=3]
[name]=О компании
[pages]=
- [id=2]
[name]=История
- [id=2]
[name]=Персонал
- [id=2]
[name]=Вакансии
|
| |
|
|
|
|
|
|
|
для: Петр
(19.06.2008 в 10:31)
| | Нашел вот что:
<?php
// Функция вывода карты сайта;
function ShowTree ($parent_id) {
$sql = "SELECT `tree_id`, `parent_id`, `title` FROM `tree` WHERE `parent_id` = $parent_id ORDER BY `title`";
$result = mysql_query($sql);
if (mysql_num_rows($result) > 0) {
echo '<ul>';
while ($row = mysql_fetch_array($result)) {
echo '<li><a href="/?tree_id='.$row['tree_id'].'">'.$row['title'].'</a></li>';
// Рекурсивный запуск функции;
ShowTree ($row['tree_id']);
}
echo '</ul>';
}
}
// Вывод карты сайта;
ShowTree (0);
?>
|
Все отлично работает, но мне нужно поместить это все в древовидный массив, для последующей обработки и вывода в Samrty | |
|
|
|
|
|
|
|
для: Петр
(19.06.2008 в 10:49)
| | У меня щас стоит тот же вопрос.
Сделал так:
php
<? function ShowTree ($parent)
{
$result = mysql_query("SELECT * FROM page WHERE parent = '".$parent."' ORDER BY id ASC;") or die (mysql_error());
if (mysql_num_rows($result) > 0)
{
while ($row = mysql_fetch_array($result))
{
$sitemap[] = $row;
}
}
return $sitemap;
}
$smarty->assign("sitemap",ShowTree(0)); ?>
|
smarty:
{section name=sitemap loop=$sitemap}
<ul><a href="{$sitemap[sitemap].id}">{$sitemap[sitemap].name}</a></ul>
{/section}
чето хрен какойто получается, выводит только поля где parent = 0
|
| |
|
|
|
|
|
|
|
для: Ильдар
(26.08.2008 в 17:10)
| | А вы чего ожидали? На одну позицию вверх по постам глянуть лень? | |
|
|
|
|
|
|
|
для: sim5
(26.08.2008 в 17:26)
| | ничего кроме этого я не нашел
{if $tree}
<ul class='tree'>
{foreach from=$tree item="item"}
<li>{$item.name}{/if}
{if $item.subtree}
{include file="tree.tpl" tree=$item.subtree}
{/if}
</li>
{/foreach}
</ul>
{/if}
|
но мне не понятно что эта за переменная $item.subtree
где и как она указывалась?
уж извините меня за некомпетентность, и не бейте меня пожалуйста | |
|
|
|
|
|
|
|
для: Ильдар
(26.08.2008 в 21:02)
| | Вы на что жалуетесь - "выводит только поля где parent = 0". Все потому, что вы делаете запрос только для parent = 0, а ожидаете большего. Выше вашего поста (на шаг), это рекурсивный запрос. Разберитесь в разнице вашего и предыдущего запросов, а уже потом можно говорить и о Smarty. | |
|
|
|