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

Форум PHP

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

 

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

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

тема: Вывод дерева
 
 автор: off   (13.01.2006 в 20:16)   письмо автору
 
 

Есть таблица:

id - id элемента
parent_id - id родителя
title - название раздела
level - уровень вложенности

Мне нужно вывести данные из этой таблицы таким образом:

Раздел1
-подраздел1_1
-подраздел1_2
-подраздел1_3
----подподраздел_1_3_1
----подподраздел_1_3_2
----подподраздел_1_3_3
-подраздел1_4
----подподраздел_1_4_1
----подподраздел_1_4_2
-подраздел1_5
-подраздел1_6

Раздел2

Раздел3

где 1_1 - это индексы.
Например 2_3_3 - это значит, что подраздел с таким индексом является 3-им по счету из всех подразделов раздела номер 3, который в свою очередь является 2-ым по счету из всех разделов.

   
 
 автор: Евгений Петров   (13.01.2006 в 20:44)   письмо автору
 
   для: off   (13.01.2006 в 20:16)
 

По быстрому накатал, не когда проверять, одно условие: элементы с уровнем 1 (ну или 0, смотря от чего осчет :) ) должны иметь parent_id = 0 и поле level можно убрать. Функция рекурсивно вызывает сама себя и должна выводить вашедерево:
<?
  
function Show($id,$index,$level)
  {
    
$query mysql_query("SELECT * FROM tbl WHERE parent_id = '$id'");
    if(
mysql_num_rows($query) > 0)
    {
      
$i 1;
      while(
$fetch mysql_fetch_array($query))
      {
        echo 
str_repeat("-",$level);
        echo 
$fetch['title'];
        echo 
$index."_$i<br>";
        
$i++;
        
Show($fetch['id'],$index."_$i",$level+1);
      }
    }
  }
  
// Вызываем функцию
  
Show(0,"",0);
?>

   
 
 автор: off   (14.01.2006 в 01:11)   письмо автору
 
   для: Евгений Петров   (13.01.2006 в 20:44)
 

Функция конечно сбоит, но я ее поправил.

ОГРОМНОЕ СПАСИБО ЭТОМУ ФОРУМУ, ЗА ТО ЧТО НА НЕМ ЕСТЬ ТАКИЕ ХОРОШИЕ ЛЮДИ!!!

Спрашивал и на других форумах, но помогли мне только здесь!

   
Rambler's Top100
вверх

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