2013-04-17 2 views
0

Я пытаюсь реализовать категорию подкатегорий неограниченной глубины на моем веб-сайте. Я действительно смущен этим. Структура таблицыНеограниченная категория глубины, подкатегория

id    medium int auto incrimant , primary 
name    varchar 
parent   medium int 

Я ищу для решения следующих задач:

  1. Как я могу написать код, чтобы позволить пользователю вводить неограниченную категорию, подкатегорию?
  2. Как загрузить категорию, подкатегорию в древовидном порядке в поле выбора?

ответ

0

Используя MPTT, вам нужно немного изменить структуру таблицы для использования MPTT. Но это бесконечный способ сделать неограниченную глубину.

Источник: http://waliaz.com/modified-pre-ordered-traversal-tree-mptt---explained.html

+0

Это выглядит очень похоже на вложенную-набор? Что же? – Bytemain

+0

ИМХО это то же самое. –

+0

ссылка не работает :( – David

0

Вы можете создать массив и рекурсивно построить дерево:

$q = mysql_query("SELECT id, parent_id, name FROM categories"); 
while ($r = mysql_fetch_row($q)) { 
    $names[$r[0]] = $r[2]; 
    $children[$r[0]][] = $r[1]; 
} 

function render_select($root=0, $level=-1) { 
    global $names, $children; 
    if ($root != 0) 
    echo '<option>' . strrep(' ', $level) . $names[$root] . '</option>'; 
    foreach ($children[$root] as $child) 
    render_select($child, $level+1); 
} 

echo '<select>'; 
render_select(); 
echo '</select>'; 
  1. More efficient hierarchy system
Смежные вопросы