{% else-1 %}
Обновить | Подписаться | Поднять тему
Чтобы выполнить действие авторизируйтесь или пройдите регистрацию на сайте.
1.
Sakamsky * 11.59
[автор] (18 мар 2017, 16:24) [0/0] [0] [отв] [спам] [под] +1 | -1

Всем привет.
Есть зц, с возможность создания бесконечной вложенности папок. Ну думаю вы поняли.
В таблице папок есть поле id_folder (айди папки, в которой находится данная папка), files (определяет тип папки. 1 - папка с файлами, 0 - папка с папками)
Тк вот не совсем могу понять, как сделать удаление.
Допустим есть такая структура:

papochka1(files 0)
--podpapochka11(files0)
----podpodpapaka112(files1)
----podpodpapaka112(files1)
----podpodpapaka112(files1)
--podpapochka12(files1)
--podpapochka13(files0)
----podpodpapaka112(files1)
----podpodpapaka112(files0)
------podpodpodpapaka112(files1)
------podpodpodpapaka112(files1)
--podpapochka14(files1)
papochka2(files 0)
--podpapochka11(files1)
--podpapochka11(files1)
papochka3(files 1)
papochka4(files1)

Как организовать удаление? Например я хочу удалить papochka1, нужно, что бы удалились сначала файлы из вложенных папок, потом папки. Ну думаю вы поняли пою мысль.
Удаляем папку. Дальше скрипт перебирает эту паку на вложенность другой папки. Если вложенная папка имеет тип папки с папками, перебираем папки в ней. Если папка с файлами, просто удаляем файлы и саму папку (это вроде не сложно). Но вот как быть с вложенными папками я не могу сообразить. Или мб папки между собой в базе не достаточно связанны. Мб какое то поле еще добавить нужно. В общем помогите. Подтолкните пжлст в нужную сторону *

2.
Wins * 5.64
(18 мар 2017, 16:28) [0/0] [0] [отв] [спам] [под] +1 | -1

function rrmdir($dir) {

$files = array_diff(scandir($dir), array('.', '..'));

foreach($files as $file) {
(is_dir($dir .'/'. $file)) ? rrmdir($dir .'/'. $file) : unlink($dir .'/'. $file);
}

rmdir($dir);

}

3.
Sakamsky * 11.59
[автор] (18 мар 2017, 16:32) [0/0] [0] [отв] [спам] [под] +1 | -1

Блин точно. Можно же функцию в функции вызвать. Этому же еще даже в школе на паскале учили ) Спасибо)

4.
bibilink * 19.01
(18 мар 2017, 16:58) [0/0] [0] [отв] [спам] [под] +1 | -1

Есть еще такой вриант.

$dir = $_SERVER['DOCUMENT_ROOT'].'/test/';

$iterator = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($dir),
RecursiveIteratorIterator::CHILD_FIRST
);

foreach ($iterator as $path)
$path->isDir() ? rmdir($path) : unlink($path);
rmdir($dir);

  • 1 из 1
Чтобы писать сообщения авторизируйтесь или пройдите регистрацию на сайте.
Подписаны: 0
Скачать тему | Файлы темы | Фильтр сообщений