Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Как удалить файлы которых нет в бд mysql? (https://forum.antichat.xyz/showthread.php?t=166413)

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 в случае возникновения ошибки.

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

PHP код:

 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

PHP код:


 
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

Цитата:

Сообщение от SoftLive
переустанови Mysql.. И сотри всё

SoftLive не ищет лёгких путей


Время: 01:28