Иллюстрированный самоучитель по PHP

Файл zapros.php

Как же принцип рекурсии можно использовать для построения списка всех папок на аккаунте? А алгоритм построения этого списка при использовании рекурсии прост:

  • Получить список файлов и папок в текущей директории.
  • Перебирать элементы из этого списка по одному.
  • Если очередной элемент – директория, то вывести на страницу ее имя и выполнить этот алгоритм по отношению к этой директории, посчитав ее текущей.

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

К данной последовательности действий можно сделать лишь одно дополнение: если в списке копируемых объектов есть папки, то из выводимого списка директорий должны быть исключены как сами эти папки, так и все вложенные в них. Данное требование довольно понятно – скопировать папку во вложенную в нее папку невозможно. Ну и, естественно, в список папок для копирования не должна попасть та папка, в которой копируемые файлы находятся – как можно файл скопировать сам на себя?

Остальные же действия кода, посвященного запросу подтверждения копирования файлов, те же самые, что и для кода удаления файлов и папок: вывести список копируемых объектов и кнопку подтверждения выбора действия.

Начало кода:

if ($copy!="")
{

Для удобства запишем в переменную название корневой папки аккаунта пользователя. Впоследствии мы будем ее неоднократно использовать в коде.

$begin="files";

Выводим запрос пользователю…

echo ("Объекты для копирования:<br>");

…и, точно так же, как в блоке кода, посвященном удалению файлов, выводим список объектов, подлежащих копированию (сравните – код практически такой же):

foreach ($fl as $i)
{
echo ("<input type=hidden name=fl[] value=$i>$folder/$i<br>");

Еще один запрос…

echo ("<bг>Выберите папку для копирования:<br>");

…и начинаем вывод дерева папок – вызываем функцию tree.

tree($begin);
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.