Проблем с функция за изтриване на файлове

cmsfan

Registered
Код:
function delete_directory($dirname) {
if (is_dir($dirname))
$dir_handle = opendir($dirname);
if (!$dir_handle)
return false;
while($file = readdir($dir_handle)) {
if ($file != "." && $file != "..") {
if (!is_dir($dirname."/".$file))
unlink($dirname."/".$file);
else
delete_directory($dirname.'/'.$file);
}
}
closedir($dir_handle);
rmdir($dirname);
return true;
}

Викам ги така:
Код:
delete_directory("E:/programi/xampp/htdocs/upload/moqtapapka/$expiredf");


Ето я и самата заявка:

Код:
$sql = "SELECT * FROM `tablica` WHERE `data` > '{$date}' "; 

while($row = mysql_fetch_array($sql)) {   
$expiredf = $row['folder'];
$expiredda = $row['data'];
$expiredid = $row['id'];
}
if ($sql) {   
delete_directory("E:/programi/xampp2/htdocs/upload/moqtapapka/$expiredf");

mysql_query("DELETE FROM `tablica` WHERE `id`='{$expiredid}' AND `folder`='{$expiredf}' AND `data`='{$expiredda}'") or die(mysql_error());
}


Лошото е, че вместо да трие "$expiredf" (базирайки се на заявката "SELECT * FROM `tablica` WHERE `data` > '{$date}'") - направо трие всички папки + главната с име "moqtapapka".

Ако не съм дефинирал $expiredf, а е така:

Код:
delete_directory("E:/programi/xampp/htdocs/upload/moqtapapka/delpapka");
- всичко е ок, трие само "delpapka" (без главната) и останалите папки които са в нея. (трие само конкретната зададена)

Въпроса ми е как да оправя всичко това ?
 
Пробвай да пренапишеш delete метода :
http://web-tourist.net/login/login/view.php?st=2283
Като използваш за основа този. Модификацийте който трябва да внесеш са
- да няма втори линк къде да се прехвърлят нещата.
- да замениш copy с unlink
 
Няма да мога да се справя, а и мисля, че ще товари хоста така като гледам за какво иде реч.

Интересното е, че когато го викна с echo:
echo "E:/programi/xampp/htdocs/upload/moqtapapka/$expiredf";
$expiredf (не излиза)
С echo expiredf; също не излиза, дори и с:
echo $row['folder']; - не излиза...

Попринцип самата заявка:
SELECT * FROM `tablica` WHERE data+'$date'>'$expire'
Предполага, че ще тегли резултати само ако времето е изтекло, понеже съм на xampp и си сетвам 10 март, но отново не излиза. (А в друга заявка за последните добавени папки - всичко е ОК, когато съм сетнал март - се скриват изтеклите папки)
 
Нещо не мога да схвана к'во се опитваш да направиш?

Искаш след като изтече даденото време, да се изпълни заявка с която да изтриеш даден запис, след което и неговата папка, така ли?
 
Пробвай така:

PHP:
<?php
$time = time();
$query = mysql_query("SELECT * FROM `table` WHERE `expire` > '{$time}';")or die(mysql_error());
while($row = mysql_fetch_object($query)) {
	$FldID	 = $row->id;
	$FldName = $row->folder;
	rmdir('E:/programi/xampp/htdocs/upload/moqtapapka/'.$FldName.'');
	mysql_query("DELETE FROM `table` WHERE `id`='{$FldID}';") or die(mysql_error());
	echo "Изтриването на изтеклите папки беше успешно.";
}
?>

П.П. Ако искаш всичко това да става автоматично /самата проверка/

Планирани задачи - Cron Jobs

ЕДИТ: Възможно е да не стане и да изтрие тези, които не са изтекли, така че промени знака в заявката: > на <
 
Оф.. че съм тъпак.

$sql = mysql_query("SELECT * FROM `tablica` WHERE `data` < '{$date}'") or die(mysql_error()); //заявката която търси изтеклите папки

винаги е било без mysql_query отпред... Цял ден се мъча и ето къде било.

+1 (Работи перфектно)
 

Back
Горе