Safary
Новичок
Мой способ создания дерева, без ID, без Parent Id...
В общем много прочитал уроков про деревья, все не подходят, поэтому решил сделать свой способ, но он конечно же много заимствует у других способов.
С выводом дерева проблем вообще никаких нет, это очень просто!
Перед тестированием кода не забудьте подключиться к БД!
======================================================
вот код:
======================================================
выводит вот такое дерево:
======================================================
софт
>игры
>>аркады
>>гонки
>>стрелялки
>программы
>>безопасность
>>>антивирусы
>>>фаерволлы
>>текст
>>>текстовые редакторы
>>графика
>>система
======================================================
А SQL-таблица для этого дерева вот такая:
После каждого редактирования таблицы надо сортировать поля по полю path:
и тогда каждый ребенок под своим родителем.
Уровни нужны тут для того, чтобы всегда их занова не считать при выводе.
1).path - это путь каталога. к примеру главный каталог имеет путь - 01
2).чтобы в него засунуть другой каталог - надо написать путь главного каталога и что в него засовываем и сохранить в поле path. типа каталог в главном каталоге будет иметь такой path - 0101
3). Чтобы добавить второй каталог в каталог 01 - естественно пишем ему path 0102 и т.д.
4). Тоесть во второй каталог, который имеет path 0102 мы легко добавим третий, назвав его path - 010201
Всё понятно?
5). При такой структуре есть возможность перемещать каталоги из каталога в каталог. Или просто менять местами.
К примеру если хоти поменять местами каталоги "игры" и "программы" - то просто перенумеровываем 0101 в 0102 и 0102 в 0101 и каталог "программы" будет стоять раньше чем игры. Ну разумеется у всех детей ещё path нужно будет поменять.
А для этого нужно чтоб автоматом всё было, таблицу я делал вручную, а хочется сделать чтобы через админку каталоги создавать, удалять, редактировать, перемещать...
типа вот такого:
первая кнопка означает - добавить каталог
вторая кнопка означает - редактировать каталог
третья кнопка означает - удалить каталог
А чтобы перетащить каталог из одного в другой - то нужно на DHTML сделать, чтоб просто перетаскивать в веб-интерфейсе, а path'ы всех каталогов сохранялись в базу в новом виде, а потом делалась сортировка. Вроде всё просто, но у меня уже плохо очень думается, всю ночь программировал... Подскажите как всё это сделать...
Мне кажется тут javascript, dhtml нада будет, а я их не знаю пока что, поэтому без них как-то сделать, а их изучать потом буду, через некоторое время и переделывать....
И вообще как вам моя идея?
В общем много прочитал уроков про деревья, все не подходят, поэтому решил сделать свой способ, но он конечно же много заимствует у других способов.
С выводом дерева проблем вообще никаких нет, это очень просто!
Перед тестированием кода не забудьте подключиться к БД!
======================================================
вот код:
PHP:
function show_level($num){
for($e=0;$e<$num;$e++){ $s.= '>'; }
return $s;
}
$query="SELECT name,level FROM tree_programs";
$query=mysql_query($query);
while($ar=mysql_fetch_array($query)){
echo show_level($ar['level']).$ar['name'].'<br>';
}
выводит вот такое дерево:
======================================================
софт
>игры
>>аркады
>>гонки
>>стрелялки
>программы
>>безопасность
>>>антивирусы
>>>фаерволлы
>>текст
>>>текстовые редакторы
>>графика
>>система
======================================================
А SQL-таблица для этого дерева вот такая:
После каждого редактирования таблицы надо сортировать поля по полю path:
PHP:
ALTER TABLE `tree_programs` ORDER BY `path`
Уровни нужны тут для того, чтобы всегда их занова не считать при выводе.
1).path - это путь каталога. к примеру главный каталог имеет путь - 01
2).чтобы в него засунуть другой каталог - надо написать путь главного каталога и что в него засовываем и сохранить в поле path. типа каталог в главном каталоге будет иметь такой path - 0101
3). Чтобы добавить второй каталог в каталог 01 - естественно пишем ему path 0102 и т.д.
4). Тоесть во второй каталог, который имеет path 0102 мы легко добавим третий, назвав его path - 010201
Всё понятно?
5). При такой структуре есть возможность перемещать каталоги из каталога в каталог. Или просто менять местами.
К примеру если хоти поменять местами каталоги "игры" и "программы" - то просто перенумеровываем 0101 в 0102 и 0102 в 0101 и каталог "программы" будет стоять раньше чем игры. Ну разумеется у всех детей ещё path нужно будет поменять.
А для этого нужно чтоб автоматом всё было, таблицу я делал вручную, а хочется сделать чтобы через админку каталоги создавать, удалять, редактировать, перемещать...
типа вот такого:
первая кнопка означает - добавить каталог
вторая кнопка означает - редактировать каталог
третья кнопка означает - удалить каталог
А чтобы перетащить каталог из одного в другой - то нужно на DHTML сделать, чтоб просто перетаскивать в веб-интерфейсе, а path'ы всех каталогов сохранялись в базу в новом виде, а потом делалась сортировка. Вроде всё просто, но у меня уже плохо очень думается, всю ночь программировал... Подскажите как всё это сделать...
Мне кажется тут javascript, dhtml нада будет, а я их не знаю пока что, поэтому без них как-то сделать, а их изучать потом буду, через некоторое время и переделывать....
И вообще как вам моя идея?