Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> построенние списка 
V
    Опции темы
MoLeX
  Дата 17.3.2009, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 7
Всего: 140



БД
Код

CREATE TABLE IF NOT EXISTS `db` (
  `id` int(13) NOT NULL auto_increment,
  `link` varchar(128) NOT NULL,
  `name` varchar(128) NOT NULL COMMENT 'Название ссылки',
  `order` int(11) NOT NULL COMMENT 'Порядок в котором надо выводит меню',
  `degree` int(10) NOT NULL default '1' COMMENT 'Степень вложености',
  `parents` int(10) NOT NULL COMMENT 'ID родителя',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=9 ;


INSERT INTO `db` (`id`, `link`, `name`, `order`, `degree`, `parents`) VALUES 
(1, 'test_1', 'Тест 1', 1, 1, 1),
(2, 'test_2', 'Тест 2', 2, 1, 2),

(3, 'test_3', 'Тест 3', 1, 2, 2),
(4, 'test_4', 'Test 4', 2, 3, 3),

(5, 'test_4_2', 'Test 4_2', 2, 4, 4),
(6, 'test_4_1', 'Test 4_1', 1, 4, 4),

(7, 'test_4_2_1', 'Test 4_2_1', 1, 6, 6),
(8, 'test_4_2_2', 'Test 4_2_2', 2, 6, 6),

(9, 'test_5', 'Test 5', 3, 1, 9);



вот то что нахимичил
Код

<?php
$data['url']                = 'http://site.com/';
$data['text']                = '';
$data['url_suffix']            = '.php';
        
$query = $this->db->query("SELECT * FROM `db` WHERE `degree` = '1' ORDER BY `order` ASC");
if($query->num_rows() > 0)
{            
    foreach($query->result() as $row)
    {
                        
        $query_1 = $this->db->query("SELECT * FROM `db` WHERE `parents` = '".$row->id."' ORDER BY `order` ASC");
        if($query_1->num_rows() > 0)
        {
            $data['text'] .= '<li class="top"><a href="'.$data['url'].$row->link.$data['url_suffix'].'" class="top_link"><span class="down">'.$row->name.'</span></a>';
            $data['text'] .= '<ul class="sub">';
            
            foreach($query_1->result() as $row_1)
            {
                $data['text'] .= '<li><a href="'.$data['url'].$row->link.'/'.$row_1->link.$data['url_suffix'].'"><span>'.$row_1->name.'</span></a></li>';
            }
                    
            $data['text'] .= '</ul></li>';
        }
        else
        {
            $data['text'] .= '<li class="top"><a href="'.$data['url'].$row->link.$data['url_suffix'].'" class="top_link"><span>'.$row->name.'</span></a></li>';    
        }
    }
}
?>


а надо чтобы получилось
Код

<li class="top"><a href="http://site.com/test_1.php" class="top_link"><span>Тест 1</span></a></li>

<li class="top"><a href="http://site.com/test_2.php" class="top_link"><span class="down">Тест 2</span></a>
    <ul class="sub">
        
            <li><a href="http://site.com/test_2/test_3.php">Тест 3</a></li>
            
            <li class="mid"><a href="http://site.com/test_2/test_4.php" class="fly">Тест 4</a>
                <ul>
                    <li><a href="http://site.com/test_2/test_4/test_4_1.php">Тест 4_1</a></li>
                        
                    <li><a href="http://site.com/test_2/test_4/test_4_2.php" class="fly">Тест 4_2</a>
                        <ul>
                            <li><a href="http://site.com/test_2/test_4/test_4_2/test_4_2_1.php">Тест 4_2_1</a></li>
                            <li><a href="http://site.com/test_2/test_4/test_4_2/test_4_2_2.php">Тест 4_2_2</a></li>
                        </ul>
                    </li>
                </ul>
            </li>
            
    </ul>
</li>

<li class="top"><a href="http://site.com/test_5.php" class="top_link"><span>Тест 5</span></a></li>


а у меня что-то не то не се
smile  



--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
krundetz
Дата 17.3.2009, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 1
Всего: 69



я бы тебе советовал, вытащить формирование списка в рекурсивную функцию
тоесть функция отрисовывала бы только один список
при отрисовке одного элемента она бы вызывала саму себя и если потомки есть то отрисовывала бы опять список и так дальше тоесть сдесь возможна бесконечная вложеность

если хочешь обойтись без рекурсии используй RecursiveIteratorIterator

Это сообщение отредактировал(а) krundetz - 17.3.2009, 13:28


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
MoLeX
Дата 17.3.2009, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 7
Всего: 140



Цитата(krundetz @  17.3.2009,  13:26 Найти цитируемый пост)
RecursiveIteratorIterator

это с чем едят-то?


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
krundetz
Дата 17.3.2009, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 1
Всего: 69



Цитата(MoLeX @  17.3.2009,  13:35 Найти цитируемый пост)
это с чем едят-то? 

посмотри здесь

в двух словах это класс который инкапсулирует в себе обход дерева.
тоесть ты делаешь следующие
Код

$rii = new RecursiveIteratorIterator(аргументы);
foreach($rii as $element)
{
     .......
}

если интересно на следующий недели планирую закончить мануальчик небольшой по этой темке



--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
MoLeX
Дата 18.3.2009, 06:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 7
Всего: 140



Цитата(krundetz @  17.3.2009,  22:54 Найти цитируемый пост)
если интересно на следующий недели планирую закончить мануальчик небольшой по этой темке

давай заканчивай)


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0448 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.