[php] removedir
: wt maja 18, 2004 9:31 am
Stworzylem funkcje do usuwania folderow na uzytek przegladarki, jedna nie dziala tak jak powinna.
Funkcja w rzeczywistosci usuwa folder, czyli najpierw czysci z plikow w srodku a pozniej usuwa folder, jednak wywala mi przy tym kupe bledow, mimo poprawnie wykonanej operacji.
Moglbym, oczywiscie dac "@" ale to jest pojscie na latwizne - chce, zeby moja funkcja dzialala dobrze.
Funkcja przewiduje rowniez zagniezdzone foldery, wedlug ktorych powtarza ta sama procedure.
Oto zrodlo samej funkcji:
[php]<?php
function removedir($thedir)
{
$tablica = spisz_dira("all+");
foreach ($tablica as $key => $value)
{
$pozycja = $thedir."/".$value;
if (!is_dir($pozycja))
{
unlink ($pozycja);
}
elseif (is_dir($pozycja))
{
removedir($pozycja);
}
}
rmdir ($thedir);
}
?>[/php]
w zrodle wystepuje funkcja spisz_dira() - sluzy ona do spisywania tresci katalogu, oto jej tresc:
[php]<?phpfunction spisz_dira($type)
{
if ($type == "all+")
{
global $thedir;
$fh = opendir($thedir);
}
elseif ($type == "files_only" || $type == "all")
{
global $dir;
$fh = opendir($dir);
}
$i = 0;
while (false !== ($file = readdir($fh)))
{
if ($file !== "." && $file !== "..")
{
if ($type == "all+")
{
$tmpvar = $thedir.$file;
}
else
{
$tmpvar = $dir.$file;
}
if ($type == "files_only")
{
if (is_dir($tmpvar) != true)
{
$tablica[$i] = $file;
}
}
elseif ($type == "all" || $type == "all+")
{
$tablica[$i] = $file;
}
$i++;
}
}
return $tablica;
}
?>[/php]
czy ktos z was mialby pojecie, daczego funkcja nie dziala? Tzn. najgorsze jest to, ze dziala, tylko zglasza bledy, jak wiec poza "@" je zlikwidowac?
Funkcja w rzeczywistosci usuwa folder, czyli najpierw czysci z plikow w srodku a pozniej usuwa folder, jednak wywala mi przy tym kupe bledow, mimo poprawnie wykonanej operacji.
Moglbym, oczywiscie dac "@" ale to jest pojscie na latwizne - chce, zeby moja funkcja dzialala dobrze.
Funkcja przewiduje rowniez zagniezdzone foldery, wedlug ktorych powtarza ta sama procedure.
Oto zrodlo samej funkcji:
[php]<?php
function removedir($thedir)
{
$tablica = spisz_dira("all+");
foreach ($tablica as $key => $value)
{
$pozycja = $thedir."/".$value;
if (!is_dir($pozycja))
{
unlink ($pozycja);
}
elseif (is_dir($pozycja))
{
removedir($pozycja);
}
}
rmdir ($thedir);
}
?>[/php]
w zrodle wystepuje funkcja spisz_dira() - sluzy ona do spisywania tresci katalogu, oto jej tresc:
[php]<?phpfunction spisz_dira($type)
{
if ($type == "all+")
{
global $thedir;
$fh = opendir($thedir);
}
elseif ($type == "files_only" || $type == "all")
{
global $dir;
$fh = opendir($dir);
}
$i = 0;
while (false !== ($file = readdir($fh)))
{
if ($file !== "." && $file !== "..")
{
if ($type == "all+")
{
$tmpvar = $thedir.$file;
}
else
{
$tmpvar = $dir.$file;
}
if ($type == "files_only")
{
if (is_dir($tmpvar) != true)
{
$tablica[$i] = $file;
}
}
elseif ($type == "all" || $type == "all+")
{
$tablica[$i] = $file;
}
$i++;
}
}
return $tablica;
}
?>[/php]
czy ktos z was mialby pojecie, daczego funkcja nie dziala? Tzn. najgorsze jest to, ze dziala, tylko zglasza bledy, jak wiec poza "@" je zlikwidowac?