Рекурсивный список папок в выпадающем меню, в php - PullRequest
2 голосов
/ 27 августа 2010

Я создаю файловый менеджер, который позволяет пользователям создавать папки внутри папок (внутри папок) для хранения своих файлов. Я не устанавливал реального ограничения на глубину папок, но я, вероятно, сделаю это 10 или что-то в этом роде.

Как я могу перечислить все папки (в древовидной структуре) внутри выпадающего меню, вот так?

/
/Folder 1
/Folder 2
  /Child of folder 2
     /Child of child of folder 2
  /Another Child of of folder 2
/Folder 3

(возможно, немного красивее).

Я использую MySQL для хранения данных папки

CREATE TABLE IF NOT EXISTS `folders` (
  `f_id` int(11) NOT NULL AUTO_INCREMENT,
  `f_parent` int(11) NOT NULL,
  `f_owner` int(11) NOT NULL,
  `f_name` varchar(255) NOT NULL,
  `f_desc` varchar(1000) NOT NULL,
  `f_added` int(11) NOT NULL,
  `f_files` int(11) NOT NULL,
  `f_private` int(1) NOT NULL,
  `f_password` varchar(255) NOT NULL,
  PRIMARY KEY (`f_id`),
  UNIQUE KEY `f_parent` (`f_parent`,`f_owner`,`f_name`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Ответы [ 3 ]

1 голос
/ 27 августа 2010

почему вы храните информацию о папках в mysql, когда вы можете использовать класс RecursiveIteratorIterator

$folder_path="PATH_TO_YOUR_FOLDER" 

$obj= new RecursiveIteratorIterator(new RecursiveDirectoryIterator($folder_path), 
RecursiveIteratorIterator::SELF_FIRST);

foreach($obj as $name => $val){
    echo "$name\n";
}

распечатает все каталоги и файлы в данной папке если вы хотите напечатать только имя папки, добавьте это условие

echo $folder (is_dir($name)) ?$name :"";

нет необходимости хранить информацию о папке в БД, если только у вас нет особых требований для хранения информации о папке в БД

0 голосов
/ 23 сентября 2010

Этот ресурс мне очень помог, когда я хотел создать что-то вроде этого:

http://abeautifulsite.net/blog/2008/03/jquery-file-tree/

Хорошая особенность этой реализации выше в том, что она использует файловую систему для хранения файлов и иерархии, она не будет работать для сложных вещей, но если вашему приложению не нужно много, это может быть то, что вам нужно.

0 голосов
/ 27 августа 2010

How could I list all the folders (in a tree structure) inside the drop down menu, like so?
Что такое «выпадающее меню»?Дерево звучит более похоже на это -> TreeView.

Существует множество реализаций элемента управления TreeView в Javascript, например, http://developer.yahoo.com/yui/treeview/, И, конечно, вы можете использовать php для подачи данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...