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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Раздел - подраздел - подподраздела, создание дерева 
:(
    Опции темы
Master_
Дата 15.8.2007, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 247
Регистрация: 31.1.2007

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



Вот есть у меня таблица со страницами.
В таблице есть поле parent_id, где указывается номер (ид) родительской страницы.

Так вот, у меня такой вопрос.
Как сделать дерево этих страниц, используя поле parent_id?

Например: есть страница с id=1. Есть страница с id=2 и parent_id=1. Дерево будет выглядеть так:
Страница с ид1
 --- Страница с ид2

Надеюсь на советы smile
PM   Вверх
Mal Hack
Дата 15.8.2007, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Совет первый - использовать поиск.
Совет второй - http://phpclub.ru/detail/article/2002-06-03
PM ICQ   Вверх
Master_
Дата 15.8.2007, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 247
Регистрация: 31.1.2007

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



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

function ShowTree($tree, $pid=0)
{
    echo "<ul>";
    foreach( $tree as $id=>$root)
    {
        if($pid!=$id)continue;
        if(count($root))
        {
            foreach($root as $key => $title)
            {
                echo "<li>{$title}";
                if(count($tree[$key]))
                {
                    ShowTree($tree,$key);
                }
            }
        }
    }
    echo '</ul>';
}

Здесь вродебы все работает, но php постоянно ругается на if(count($tree[$key])) и в результате идут пустые строки, но дерево отображается как надо.

Вот вызов функции:
Код

    while($row = mysql_fetch_assoc($result))
    {
        $tree[$row['parent_id']][$row['id']] = $row['name'];
    }

Поможете доделать код до рабочего вида?
PM   Вверх
Master_
Дата 15.8.2007, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 247
Регистрация: 31.1.2007

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



Может кто поможет?
PM   Вверх
Serg_pnz
Дата 21.8.2007, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 21.8.2007

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



Master_, я пользую эту функцию

Код

$massiv[$cid] = array($title, $parentid);
      foreach ($massiv as $key => $val) {
         $content[$key] = $val[0];
         $flag = $val[1];
         while ($flag != "0") {
            $content[$key] = $massiv[$flag][0]."/".$content[$key];
            $flag = $massiv[$flag][1];
         }
      }
   asort ($content);
   foreach ($content as $key => $val) {
      echo "<option value=\"$key\">$val</option>";
}


У главной категории должен быть $parentid равным 0 (нулю)
PM MAIL   Вверх
-=Ustas=-
Дата 21.8.2007, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

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



Цитата(Master_ @  15.8.2007,  17:40 Найти цитируемый пост)
но php постоянно ругается на if(count($tree[$key])) и в результате идут пустые строки, но дерево отображается как надо.

а isset на что же?


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




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


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

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