PDA

Просмотр полной версии : Как удалить файлы которых нет в бд mysql?


Ridikh
27.12.2009, 14:45
del

Deathdreams
27.12.2009, 14:49
Бред какой-то.
Мб я не так понял конечно, но какая связь с удалением записей с мускуля и удалением файлов?

Gifts
27.12.2009, 14:51
Ridikh на php - http://php.net/opendir, http://php.net/readdir. Получаете список всех файлов, сравниваете со списком хороших - остальные удаляете.

В дальнейшем удаляете по человечески, не только из базы, но и с диска

Osip
27.12.2009, 17:44
впринципе если имеется информация о файлах в бд то 1м запросом с поощью NOT IN можно справиться

POS_troi
27.12.2009, 21:39
unlink() Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Вот и обрабатывай ошибку как положено


if (isset($_GET['id_del'])) {
$id_del=$_GET['id_del'];
$file_del=db_query("SELECT file_name FROM files WHERE id=$id_del");

if(unlink("files/".$file_del)){ // Для начала пытаемся удалить файл
db_query("DELETE FROM files WHERE id=$id_del LIMIT 1");
// И если все гуд то удаляем и запись в базе
unset($id_del);
}else{
//Иначе во все горло орем о невозможности удалить файл
echo "Ааааа.... млять не могу удалить эти чертовы байтики ис харда =( ";
}
}



+ Как вообще попадают файлы на сервер? какие права на них стоят? ... вообщем мало инфы.

Кстати отображение ошибок включи и будет больше счастья ini_set('error_reporting', E_ALL);

да кстати - лучше не так "files/" а так "/files/" относительно корневого каталога

Deathdreams
27.12.2009, 21:40
if (isset($_GET['id_del'])) {

$id_del = (int)trim($_GET['id_del']);

$file_del = db_query("SELECT `file_name` FROM `files` WHERE `id`='$id_del'");

if(!$file_del){

die('Mysql problem');

}

$array = mysql_fetch_array($file_del);

$filename = $array['file_name'];

if(db_query("DELETE FROM `files` WHERE `id`='$id_del' LIMIT 1") && unlink("files/".$filename)){

die('file deleted');

} else { die('i cannot delete file :(');

}



}

Deathdreams
28.12.2009, 01:17
Ковыряйся в мускуле.
Попробуй сделать запрос без всяких посторонних функций.
Подключись к мускулю и сделай обычный mysql_query, он тебе напишет в чём ошибка заключается.

Gifts
04.01.2010, 18:32
Ridikh вы мазохист? Или насильник? За что вы так сношаете mysql?

SoftLive
04.01.2010, 18:59
МБ просто переустанови Mysql.. И сотри всё в data

Deathdreams
05.01.2010, 16:37
переустанови Mysql.. И сотри всё
SoftLive не ищет лёгких путей

Deathdreams
05.01.2010, 16:59
Не мускуль нужно переустанавливать, а руки выравнять надо.