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

Форум MySQL

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

 

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

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

тема: Вывод подразделов
 
 автор: golovdinov   (28.02.2007 в 21:20)   письмо автору
 
 

Подскажите пожалуйста как реализовать следующий прием:
Есть таблица в БД с разделами, и каждому разделу можно назначить подразделы, а им в свою очередь свои подразделы и т.д. без ограничений. Как реализовать вывод всех подразделов следующим образом?


Раздел
   - подраздел
     -- подраздел
     -- подраздел
   - подраздел
Раздел
....

   
 
 автор: mesos   (28.02.2007 в 22:10)   письмо автору
 
   для: golovdinov   (28.02.2007 в 21:20)
 

Структура таблицы такая:

CREATE TABLE `table` (
`id` INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`parent` INT( 10 ) NOT NULL ,
`name` VARCHAR( 255 ) NOT NULL );


Корневые разделы будут иметь parent=0
Подраздел добавляется к любому разделу путем присвоения столбцу parent подраздела значения id родительского раздела.

Затем все это можно выбрать в массив:

<?php

$output 
= array();
$result mysql_query("SELECT * FROM `table`");
while(
$row mysql_fetch_assoc($result))
 {
  
$i $row['id'];
  
$p $row['parent'];
  
$output[$p][$i] = $row['name'];
 }
?>

И вывести:

<?php

build_tree
($output0);
 
 function 
build_tree($arr$root$prefix='--')
  {
   foreach(
$arr[$root] as $key=>$value)
    {
     echo 
$prefix.$value.'<br>';
     if(isset(
$arr[$key])) build_tree($arr$key$prefix.'--');
    }
  }

?>

   
Rambler's Top100
вверх

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