imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Веб-мастеру > Веб-программирование
Опции темы
Старый 26.06.2005, 01:36     # 1
Sam Dark
Member
 
Аватар для Sam Dark
 
Регистрация: 03.07.2003
Адрес: Voronezh, Russia
Пол: Male
Сообщения: 294

Sam Dark МолодецSam Dark МолодецSam Dark Молодец
Question PHP, Smarty. Построить и отобразить дерево.

Про деревья тему нашел. Написал вот такую штуку:

PHP код:
<?php
  
function DisplayChildren($id$indent)
  {
    require_once(
'f_db.php');
    
$result=db_query('SELECT cat_id, cat_name
                      FROM categories
                      WHERE cat_parent_id ='
.$id.
                    
' ORDER BY cat_name');
    
    
$cnt=0;
    while (
$row mysql_fetch_assoc($result))
    {
    
$cnt $cnt+1;
    
$cat[] = array('id' => $row['cat_id'],
                   
'name' => $row['cat_name']);
    }
    
    if (
$cnt 0)
    {
      foreach(
$cat as $val)
      {
        for(
$i=0$i<$indent$i++)
        {
          print(
'&nbsp;&nbsp;&nbsp;&nbsp;');
        }
        print(
$val['name'].'<br>');
        
DisplayChildren($val['id'], $indent+1);
      }
    }
  } 
?>
т.к. активно использую Smarty надо как-то передать ему всё это дело и отобразить. Сколько не пытался - рекурсия затирает всё, что я пытаюсь отдать.

Как лучше сделать?
__________________
Это жжжж неспроста...
Sam Dark вне форума  
Старый 26.06.2005, 14:06     # 2
Sam Dark
Member
 
Аватар для Sam Dark
 
Регистрация: 03.07.2003
Адрес: Voronezh, Russia
Пол: Male
Сообщения: 294

Sam Dark МолодецSam Dark МолодецSam Dark Молодец
Нашел.

PHP код:
<?php
  
  
// Модуль дерева категорий
  // 26.06.2005 13:25:26
  
  
session_start();
  require_once(
'config.php');
  
$smarty->assign('content','tree.tpl');
  
$smarty->assign('theme','Дерево разделов');
  
  function 
GetTree($id$indent, &$tree)
  {
    require_once(
'f_db.php');
    
$result=db_query('SELECT cat_id, cat_name
                      FROM categories
                      WHERE cat_parent_id ='
.$id.
                    
' ORDER BY cat_name');
    
    
$cnt=0;
    while (
$row mysql_fetch_assoc($result))
    {
    
$cnt $cnt+1;
    
$cat[] = array('id' => $row['cat_id'],
                   
'name' => $row['cat_name']);
    }
    
    if (
$cnt 0)
    {
      foreach(
$cat as $val)
      {
        
$tree[] = array('id'=>$val['id'], 'indent'=> $indent'name'=>$val['name']);
        
GetTree($val['id'], $indent+1$tree);
      }
    }
  }
    
  
GetTree(0,0$tree);
   
  
$smarty->assign('tree'$tree);
  
  
$smarty->display('design.tpl');
?>
Тему можно закрыть.
__________________
Это жжжж неспроста...
Sam Dark вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 15:05.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.