Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Дерево страниц сайта (карта сайта)
 
 автор: Петр   (19.06.2008 в 10:31)   письмо автору
 
 

Всем привет!

Имеется таблица страниц:
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:49)   письмо автору
 
   для: Петр   (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

   
 
 автор: Ильдар   (26.08.2008 в 17:10)   письмо автору
 
   для: Петр   (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

   
 
 автор: sim5   (26.08.2008 в 17:26)   письмо автору
 
   для: Ильдар   (26.08.2008 в 17:10)
 

А вы чего ожидали? На одну позицию вверх по постам глянуть лень?

   
 
 автор: Ильдар   (26.08.2008 в 21:02)   письмо автору
 
   для: 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
где и как она указывалась?

уж извините меня за некомпетентность, и не бейте меня пожалуйста

   
 
 автор: sim5   (27.08.2008 в 06:31)   письмо автору
 
   для: Ильдар   (26.08.2008 в 21:02)
 

Вы на что жалуетесь - "выводит только поля где parent = 0". Все потому, что вы делаете запрос только для parent = 0, а ожидаете большего. Выше вашего поста (на шаг), это рекурсивный запрос. Разберитесь в разнице вашего и предыдущего запросов, а уже потом можно говорить и о Smarty.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования