Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.02.2014, 12:33   #11
Аlex
Форумчанин
 
Регистрация: 16.11.2006
Сообщений: 175
По умолчанию

получается такой список
Код:
Общая id= (17) parent=() 
  <ul>
    синий id= (18) parent=(17) 
    <ul>
      зеленый id= (19) parent=(18) 
      <ul>
        красный id= (20) parent=(19) 
        <ul></ul>
      </ul>
    </ul>
  </ul>
  синий id= (18) parent=(17) 
  <ul>
    зеленый id= (19) parent=(18) 
    <ul>
      красный id= (20) parent=(19) 
      <ul></ul>
    </ul>
  </ul>
  зеленый id= (19) parent=(18) 
  <ul>
    красный id= (20) parent=(19) 
    <ul></ul>
  </ul>
  красный id= (20) parent=(19) 
  <ul></ul>
кароче либо я ничего уже не понимаю либо неправиьлно описал проблему
мне кажется дерево это когда в итеме с id= 17 лежат все item у которых Ownerid = 17 так ведь ?
и самый сложный момент - когда в рекурсии рисовать li ?
чайник юзеру не товарищ, а сам себе враг...

Последний раз редактировалось Аlex; 11.02.2014 в 12:50.
Аlex вне форума Ответить с цитированием
Старый 11.02.2014, 12:53   #12
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

Цитата:
Общая id= (17) parent=()
<ul>
синий id= (18) parent=(17)
<ul>
зеленый id= (19) parent=(18)
<ul>
красный id= (20) parent=(19)
<ul></ul>
</ul>
</ul>
</ul>..
Тут то все нормально. Я же написал выше, что не точно, допиливай сам, я за тебя писать не буду, и никто не будет.
Кольша вне форума Ответить с цитированием
Старый 11.02.2014, 13:25   #13
buriat
Форумчанин
 
Регистрация: 28.06.2010
Сообщений: 189
По умолчанию

PHP код:
<?php

    
function build_tree($items$current_element_id 0$id_keyname 'id'$parent_id_keyname 'parent_id'$parentarray_name 'childs') {
        if(empty(
$items)) return array();
        
$return = array();
        foreach(
$items as $item) {
            if(
$item[$parent_id_keyname] == $current_element_id) {
                
$item[$parentarray_name] = build_tree($items$item[$id_keyname], $id_keyname$parent_id_keyname$parentarray_name);
                
$return[] = $item;
            }
        }
        return 
$return;
    }

    function 
output_tree($items) {
        echo 
"<ul>";
        foreach(
$items as $item) {
            echo 
"<li>".$item['Name']."</li>";
            if (!empty(
$item['childs'])) {
                
output_tree($item['childs']);
            }
        }
        echo 
"</ul>";
    }

    
$array = array(
        array(
'id_theme' => 17'Ownerid' => null'Name' => 'A'),
        array(
'id_theme' => 18'Ownerid' => 17'Name' => 'B'),
        array(
'id_theme' => 19'Ownerid' => 18'Name' => 'C'),
        array(
'id_theme' => 20'Ownerid' => 19'Name' => 'D'),
        array(
'id_theme' => 15'Ownerid' => 18'Name' => 'F'),
        array(
'id_theme' => 16'Ownerid' => null,'Name' => 'E'),
        array(
'id_theme' => 14'Ownerid' => 18'Name' => 'G'),
        array(
'id_theme' => 13'Ownerid' => 19'Name' => 'H'),
    );

    
$tree build_tree($array0'id_theme''Ownerid');
    
output_tree($tree);

?>
buriat вне форума Ответить с цитированием
Старый 11.02.2014, 15:39   #14
Аlex
Форумчанин
 
Регистрация: 16.11.2006
Сообщений: 175
По умолчанию

buriat, спасибо список генерит афигительный, под select ща сам переделаю )))
чайник юзеру не товарищ, а сам себе враг...
Аlex вне форума Ответить с цитированием
Старый 11.02.2014, 18:31   #15
Аlex
Форумчанин
 
Регистрация: 16.11.2006
Сообщений: 175
По умолчанию

вообщем зря ковырялся, оказывается optgroup вложенные не бывают
в итоге получилась такая штука
PHP код:
function output_tree3($items$i=0) { 
       foreach(
$items as $item) { 
            echo 
"\t<option>".str_repeat("&nbsp;"$i).$item['Name']."($i)(id/pid=".$item['id_theme']."/".$item['Ownerid'].")</option>"."\r\n"
            if (!empty(
$item['childs'])) { 
                
output_tree3($item['childs'], $i+6); 
            } 
        } 
    } ; 
т е выравнивание тупо пробелами (
чайник юзеру не товарищ, а сам себе враг...
Аlex вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Построить дерево из JSON/XML Человек_Борща JavaScript, Ajax 3 22.11.2013 15:47
C++ Построить и реализовать унарное дерево Sauber584 Помощь студентам 1 28.10.2010 00:27
Построить дерево в VirtualDrawTree ikot Компоненты Delphi 1 17.10.2009 01:08
построить дерево,помогие пожалуйста olesyaA Помощь студентам 13 30.05.2009 19:41
Построить дерево в ширину JET_FLASH Помощь студентам 3 06.02.2008 08:18