|
|
|
| Допустим есть папка Folder в ней еще две папки 1 и 2 и файлы 1.txt, 2.txt, 3.txt. В папке 1 лежат файлы 4.txt и 5.txt. В папке 2 папка 3. В папке 3 файл 6.txt. (Извините за длинное описание)
Значит в файлменеджере это должно выглядеть примерно так:
[dir]Folder
|----[dir]1
| |----[file]4.txt
| |----[file]5.txt
|----[dir]2
| |----[dir]3
| |----[file]6.txt
|----[file]1.txt
|----[file]2.txt
|----[file]3.txt
Вопрос в том как это сделать при помоши ПХП - т.е. как вывести этот список используя readdir. Проблема в том чтобы прочитав до конца всю 1-ую ветвь, перейти ко второй, при этом надо заранее прочитать все ветви, а не делать ссылки типа: ?currentdir=folder/1/.
Все мои потуги окончились 2-мя вариантами:
1. Выводился только верхний уровень
2. Выводилась только первая ветвь (Folder/1/)
Помогите плиз!!! | |
|
|
|
|
|
|
|
для: mistersmak
(10.11.2005 в 08:10)
| | Для этого обычно используется рекурсивная функция вроде
<?php
scan_dir(".");
//////////////////////////////////////////////////////////
// Рекурсивная функция - спускаемся вниз по каталогу
//////////////////////////////////////////////////////////
function scan_dir($dirname)
{
// Открываем текущую директорию
$dir = opendir($dirname);
// Читаем в цикле директорию
while (($file = readdir($dir)) !== false)
{
// Если файл обрабатываем его содержимое
if($file != "." && $file != "..")
{
// Если имеем дело с файлом - регистрируем его
if(is_file($dirname."/".$file))
{
echo $dirname."/".$file." - ".
date("m.d.y",filemtime($dirname."/".$file))." - ".
filesize($dirname."/".$file)."<br>";
}
// Если перед нами директория, вызываем рекурсивно
// функцию scan_dir
if(is_dir($dirname."/".$file))
{
echo $dirname."/".$file."<br>";
scan_dir($dirname."/".$file);
}
}
}
// Закрываем директорию
closedir($dir);
}
?>
|
Вот ещё ссылка на обход дерева каталогов
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=7610 | |
|
|
|
|
|
|
|
для: cheops
(10.11.2005 в 13:03)
| | Да, примерно то я и сделал, только(как всегда) немного напортачил.
Вот еще вопросик:
var TREE_ITEMS = [
['folder', 'folder/',
['abc', 'folder/abc/',
['asd', 'folder/abc/asd/',
['klio.txt','folder/abc/asd/klio.txt'],
['mega.txt','folder/abc/asd/mega.txt'],
],
['1.txt','folder/abc/1.txt'],
['2.txt','folder/abc/2.txt'],
],
['def', 'folder/def/',
['folder', 'folder/def/folder/',
['irr.txt','folder/def/folder/irr.txt'],
['melf.txt','folder/def/folder/melf.txt'],
],
],
['Documentation.txt','folder/Documentation.txt'],
['fs1.txt','folder/fs1.txt'],
['lamers.txt','folder/lamers.txt'],
['text1.txt','folder/text1.txt'],
]
];
|
Кто-то когда-то давал ссылку на файловое дерево на яваскрипте, я его стыбрил =)
Пхп должен формировать такой файл(выше).
<?
function scan_dir($dirname,$content)
{
$dir = opendir($dirname);
while (($file = readdir($dir)) !== false)
{
if($file != "." && $file != "..")
{
if(is_file($dirname."/".$file))
{
$content = $content."['$file','$dirname/$file'],";
//echo "$dirname/$file<br>";
}
if(is_dir($dirname."/".$file))
{
//echo "$dirname/$file<br>";
$content2 = scan_dir("$dirname/$file",$content);
$content = $content2."],['$dirname','$dirname/$file',";
}
}
}
closedir($dir);
return $content;
}
$paths = "var TREE_ITEMS = [".scan_dir("folder",$content)."];";
$tree = fopen("tree_items.js","w");
fwrite($tree,$paths);
fclose($tree);
?>
|
я опять что-то попутал =( Помогите мне плиз!!! | |
|
|
|
|
|
|
|
для: mistersmak
(11.11.2005 в 01:23)
| | А в чём ошибка заключается, что не правильно? | |
|
|
|
|
|
|
|
для: cheops
(11.11.2005 в 02:05)
| | Вроде где-то что-то куда-то =) не туда поставлено, непойму что
Вот файл сгенерированный скриптом:
var TREE_ITEMS = [['1.txt','folder/abc/1.txt'],['2.txt','folder/abc/2.txt'],['klio.txt','folder/abc/asd/klio.txt'],['mega.txt','folder/abc/asd/mega.txt'],],['folder/abc','folder/abc/asd',],['folder','folder/abc',['irr.txt','folder/def/folder/irr.txt'],['melf.txt','folder/def/folder/melf.txt'],],['folder/def','folder/def/folder',],['folder','folder/def',['Documentation.txt','folder/Documentation.txt'],['fs1.txt','folder/fs1.txt'],['lamers.txt','folder/lamers.txt'],['text1.txt','folder/text1.txt'],];
|
Вот файл написанный вручную:
var TREE_ITEMS = [
['folder', 'folder/',
['abc', 'folder/abc/',
['asd', 'folder/abc/asd/',
['klio.txt','folder/abc/asd/klio.txt'],
['mega.txt','folder/abc/asd/mega.txt'],
],
['1.txt','folder/abc/1.txt'],
['2.txt','folder/abc/2.txt'],
],
['def', 'folder/def/',
['folder', 'folder/def/folder/',
['irr.txt','folder/def/folder/irr.txt'],
['melf.txt','folder/def/folder/melf.txt'],
],
],
['Documentation.txt','folder/Documentation.txt'],
['fs1.txt','folder/fs1.txt'],
['lamers.txt','folder/lamers.txt'],
['text1.txt','folder/text1.txt'],
]
];
|
Если использовать сгенерированный пишет это:
Предполагается наличие идентификатора (строка 2 символ 157)
"TREE ITEMS" - определение отсутствует (строка 24 символ 3)
Вот все это в архиве (может поможет =) | |
|
|
|
|
|
|
|
для: mistersmak
(11.11.2005 в 02:24)
| | Может из-за того, что с самого начала идут файлы, а не директория? Попробуйте подняться на директорию выше... | |
|
|
|
|
|
|
|
для: cheops
(11.11.2005 в 02:05)
| | Всеми забытый, плачу в углу... =) | |
|
|
|
|