Автор Тема: удаление файлов в дире циклом  (Прочитано 6296 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн DV

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 13
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
удаление файлов в дире циклом
« : 22 Января 2004, 17:58:24 »
есть дира img/
а в ней папки m01 m02 ... m12 (месяц)
такая вот сортировка - может потом я отнее и откажусь но пока не напрягает.

значит через форму-запрос, выводим все картинки за определенный месяц, с возможностью удаления каждой в отдельности.
Выглядит само удаление так:

$table = "img_news_";
$imgdir = "../../img/news/m$mon";
?>
$query ="DELETE FROM $table WHERE id=\'$id\'";
mysql_query($query)
or die();
?>
$del = unlink("$imgdir/$name");
if ($del)
{
print ("
пипец файлу");
}
?>

поясню:
в форму выводится результат запроса из базы - id, и name.
дира известна и так, только немного дописываем номер к папке переменной $mon
$mon - берется из формы 01 02 ... 12

что происходит далье и так видно - удаляем строку из базы и потом сам файл.

Вот желание появилось удалить на основе этих данных сразу все файлы!
как лучше сделать - подскажите.
пробовал вариант: \'удаление всех файлов\' в дире (здесь обсуждалось), но он у меня что-то не пошел (руки кривые). В папке было три файла. Трижды вылезла ошибка что \'файл не найден\', с зовершением ошибки: \'невозможно удалить диру - так как там файлы\' :)

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
удаление файлов в дире циклом
« Ответ #1 : 22 Января 2004, 18:17:06 »
Цитировать
DV:
вылезла ошибка что \'файл не найден\',

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

Оффлайн DV

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 13
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
удаление файлов в дире циклом
« Ответ #2 : 22 Января 2004, 18:24:39 »
так ведь фишка в том скрипте как раз в том, что бы не знать имен файлов, а удалить все существующие файлы в дире!
нет имен в приципе - есть просто тело - \'файл\'

а если нет имен.. то что выводить то???
возможно я и гоню... дело было вечером, после раздумок и было написано то что было.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
удаление файлов в дире циклом
« Ответ #3 : 22 Января 2004, 18:33:04 »
для того, чтобы файл удалить, его имя надо знать.
фишка того скрипта в том, что он сначала узнает имена файлов, а потом их удаляет.

Цитировать
DV:
нет имен в приципе - есть просто тело - \'файл\'

а вот про это - поподробнее.
весьма занимательное утверждение.

Оффлайн DV

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 13
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
удаление файлов в дире циклом
« Ответ #4 : 22 Января 2004, 18:37:49 »
Ромик... ты прав елки палки :)

Оффлайн DV

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 13
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
удаление файлов в дире циклом
« Ответ #5 : 22 Января 2004, 20:50:32 »
в общем я разобрался в том скрипте - что файлы считывает и удаляет.
Называется найди 2 отличия :)
у меня не получалось - потому что поставил лишние скобки....
привожу пример как у меня все работает (если вдруг кто-то тоже криворукий как и я :) )

if ($pic =="del")
{
$dir = "../img/news/m$mon/";

   if ($handle = opendir("$dir"));
   {
        while (false !== ($file = readdir($handle)))
          {
            if ($file != "." && $file != "..")
         {
              {
                $del_file=$dir.$file;
                unlink($del_file);
              }
      }
          }
        closedir($handle);
      rmdir($dir);
    }
print "
каталог $dir>/b< удален
";
}
?>

диру задали
месяц $mon - берется из формы
м... да вобщем все :)

тему можно закрыть - но вообще-то про циклы интересно узнать поподробнее - в теории я понял а вот на практике мой пример (сабж) можно разобрать ?

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
удаление файлов в дире циклом
« Ответ #6 : 22 Января 2004, 21:02:05 »
что в нем разбирать?
он собран целиком из кусков из мана

Оффлайн DV

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 13
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
удаление файлов в дире циклом
« Ответ #7 : 23 Января 2004, 09:50:11 »
ну видимо я не так скопировал :)
потому что когда с маном стал сравнивать нашел лишние скобки.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
удаление файлов в дире циклом
« Ответ #8 : 23 Января 2004, 09:59:33 »
лишние скобки у тебя потому, что ты их по-дурацки ставишь.
и единственный способ найти лишнюю - это, действительно - посчитать.

if ($pic =="del") {
  
$dir "../img/news/m$mon/";
  if (
$handle opendir("$dir")) {
    while (
false !== ($file readdir($handle))) { 
      if (
$file != "." && $file != "..") {
        
$del_file=$dir.$file
        
unlink($del_file); 
      }
    } 
  } 
  
closedir($handle);
  
rmdir($dir); 
  print 
"<div align=\'center\'>каталог <b>$dir>/b< удален</div>";
}

Вот - смотри. тут все сразу ясно.
Для кого отступы придумали?

кроме скобок, я тут в одном месте еще точку с запятой убрал.
Смотри.

и дело тут не в циклах, а в элементарной логике - что за чем идет и в каком случае исполняется.

Оффлайн DV

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 13
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
удаление файлов в дире циклом
« Ответ #9 : 23 Января 2004, 10:06:36 »
это у меня тут они так глупо ставятся.. я не знаю откуда ты копируешь так все в цвете ,)
но все равно спасибо.

Оффлайн DV

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 13
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
удаление файлов в дире циклом
« Ответ #10 : 23 Января 2004, 10:11:29 »
блин... я тормаз.. здесь же в форме все есть....
уууууууууууу............... :)

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
удаление файлов в дире циклом
« Ответ #11 : 23 Января 2004, 10:47:36 »
дело-то не в цвете.
а в принципе расстановки скобок.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28