Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Usuwanie wszystkich plików z folderu.
Forum PHP.pl > Forum > Przedszkole
dawhol
Wiem ze fukncja unlink moge skasować plik ale hmm ja potrzbuuje skasowac liczbe x plików z folderu i niewiem jak to zrobic tzn jak pobrac nazwy plikow do tablicy a pozniej skasowac kazzdy plik z osobna.

Proszę o pomoc.
devnul
http://pl2.php.net/opendir
dawhol
hehe ;P jak bym nie próbował

robiłem tak:
  1. <?php
  2. $folder = "../upload/".$name."/";
  3.  
  4.  $files = scandir($folder);
  5.  $ile = count($files);
  6.  $f = 0;
  7.  for ($i = 1; $i <= $ile; $i++)
  8.  {
  9.  unlink($folder.$files[$f]);
  10. $f++;
  11.  };
  12. ?>
ale wyskakuje mi:

Warning: unlink(../upload/folder/.) [function.unlink]: Permission denied in c:\usr\apache\... on line 287

Warning: unlink(../upload/folder/..) [function.unlink]: Permission denied in c:\usr\apache\... on line 287

dodam iż chmody sa OK no i musi byc PHP 5 wtedy wiec wolał bym fukncja readdir ale
jak ją zastosowałem to wtedy w tablicy mam tylk "."(kropke) i nic więcej mimo że plików jest 9
strife
No dobrze kombinujesz, ale nie wiem w czym masz teraz problem. Ponieważ:

  1. <?php
  2. for ($i = 1; $i <= $ile; $i++)
  3.  {
  4. if ( $files[$f] != '.' && $files[$f] != '..' )
  5. {
  6. unlink($folder.$files[$f]);
  7. $f++;
  8. }
  9.  };
  10. ?>


I Tyle, bo jak rozumiem pliki Ci Twoja funkcja kasuje tak?

PS. popraw ten ort. w temacie bo razi w oczy.

~edit
A może Ty chcesz usunąć całą zawartość katalogu, łączenie z katalogami i plikami w nim itp. ?
dawhol
W sumie to chce usunac jeden folder w którym sa pliki ale najpier musz usunac pliki zeby pozniej wunkcja rmdir skasowac folder.

Druga sprawa to zalezało by mi na wykorzystaniu readdir poniewaz on dziala w php4 a scandir tylko w php5 ;/
Zaraz sprawdze to co napisałes. Ale i tak dzieki winksmiley.jpg


~EDIT:

Teraz to wogóle nie usuwa tongue.gif plików ;/
skowron-line
  1. <?php
  2.  
  3. $kat = 'skowron';
  4. $katalog = opendir($kat);
  5.  
  6. while($plik = readdir($katalog)) {
  7.  
  8. if($plik != '.' AND $plik != '..') {
  9.  
  10. unlink($kat.'/'.$plik);
  11. }
  12.  
  13. }
  14.  
  15. ?>


zobacz cos takiego (testowane 2 razy)
dawhol
ok teraz działa smile.gif ale co do porównania winksmiley.jpg to chyba == tongue.gif a nie = winksmiley.jpg ale to taki mały szczegól tongue.gif

pojawił się jednak jescze jeden problem teraz nieche usunac sie katalog ;P
mimo ze chmody sa OK to pisze ze dostep zabroniony
skowron-line
Cytat(dawhol @ 9.04.2007, 08:45:49 ) *
ok teraz działa smile.gif ale co do porównania winksmiley.jpg to chyba == tongue.gif a nie = winksmiley.jpg ale to taki mały szczegól tongue.gif

pojawił się jednak jescze jeden problem teraz nieche usunac sie katalog ;P
mimo ze chmody sa OK to pisze ze dostep zabroniony


Kod
ok teraz działa :) ale co do porównania;) to chyba == :P a nie =;) ale to taki mały szczegól :P

jakie porownanie?questionmark.gif
Kod
pojawił się jednak jescze jeden problem teraz nieche usunac sie katalog;P
mimo ze chmody sa OK to pisze ze dostep zabroniony


to wez na chama przed usunieciem jeszcze raz ustaw chmoda i w nastepnej lini usun
dawhol
  1. <?php
  2. if($plik != '.' AND $plik != '..') {
  3. ?>
a powinno byc chyba
  1. <?php
  2. if($plik !== '.' AND $plik !== '..') {
  3. ?>
tongue.gif tzn ja poprawiłem tak nie sprawdzałem czy z jednym = działa.


co do usuwania katalogu nadal to nie dziala ;/
  1. <?php
  2. $folder = "../upload/".$name;
  3.  
  4. chmod($folder.'/', 0777);
  5.  
  6.  if (!file_exists($folder.'/')) { echo ('<br /><div class="admin"><h4>Folder przypisany do danego obiektu nie istnieje</h4></div>'); }
  7.  else
  8.  {
  9.  if(!rmdir($folder.'/')) {echo 'Blad';} else {echo ('<br /><div class="admin"><h4>Folder przypisany do danego obiektu zostal skasowany !!!</h4></div>');}
  10.  
  11.  }
  12. ?>
rojmarek
Cytat(dawhol @ 9.04.2007, 10:17:12 ) *
  1. <?php
  2. if($plik != '.' AND $plik != '..') {
  3. ?>
a powinno byc chyba
  1. <?php
  2. if($plik !== '.' AND $plik !== '..') {
  3. ?>

tak i tak zadziała. !== sprawdza nie identyczność, a != sprawdza nie równość... dyskretna różnica, np 1==TRUE zwróci true, a 1===TRUE zwróci false analogicznie
skowron-line
  1. <?php
  2. $folder = "skof";
  3.  
  4. chmod($folder,0777);
  5.  
  6.  if (!file_exists($folder)) { echo ('<br /><div class="admin"><h4>Folder przypisany do danego obiektu nie istnieje</h4></div>'); }
  7.  else
  8.  {
  9.  if(!rmdir($folder)) {echo 'Blad';} else {echo ('<br /><div class="admin"><h4>Folder przypisany do danego obiektu zostal skasowany !!!</h4></div>');}
  10.  
  11.  }
  12. ?>


testowane 2 razy i dziala
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.