Удаление файлов с сервера

wwwserfer

Постоялец
Регистрация
22 Ноя 2007
Сообщения
103
Реакции
28
Приветствую!

Была конструкция, при которой по удалении статьи не удалялись вложения использованные в статье (основное изображение и миниатюра) и записи о них из БД.
Доработал. Записи из БД удаляются, но вот сами вложения с сервера - никак не осилил... вернее немного осилил) удаляется только один файл из, к примеру, трех. А нужно чтобы все.
Предполагаю что следует использовать foreach или while? Но все мои попытки оказались тщетны... удаляется только один файл изображения+миниатюра... либо вообще ничего не происходит.
Подскажите пожалуйста правильное решение если не трудно)

Что сейчас:

PHP:
function DeleteArticle2()
{
...........................
...........................
...........................

$dbresult = db_query("
        SELECT
            ID_ARTICLE, filename, thumbnail
        FROM {$db_prefix}articles_attachments
        WHERE ID_ARTICLE = $id
        ", __FILE__, __LINE__);
    $row = mysql_fetch_assoc($dbresult);
    mysql_free_result($dbresult);
======================================
    // Удаляется изображение
    @unlink($modSettings['articles_path'] . $row['filename']);
    // Удаляется его миниатюра
    @unlink($modSettings['articles_path'] . $row['thumbnail']);
======================================
    // Delete Attachments
    db_query("DELETE FROM {$db_prefix}articles_attachments WHERE ID_ARTICLE = $id", __FILE__, __LINE__);

...........................
...........................
...........................
}
 
Последнее редактирование:
Чтобы подсказать решение, необходимо видеть структуру БД.
 
Как-то так:
PHP:
while ($row = mysql_fetch_assoc($dbresult)) {
    ======================================
    // Удаляется изображение
    @unlink($modSettings['articles_path'] . $row['filename']);
    // Удаляется его миниатюра
    @unlink($modSettings['articles_path'] . $row['thumbnail']);
======================================
}
 mysql_free_result($dbresult);
// Delete Attachments
    db_query("DELETE FROM {$db_prefix}articles_attachments WHERE ID_ARTICLE = $id", __FILE__, __LINE__);
По-хорошему, там надо делать проверку, что файл удалился и только после этого удалять из базы. Но мне лень писать можете сами заморочиться ;)

<-------------- добавлено через 29 сек. -------------->
Чтобы подсказать решение, необходимо видеть структуру БД.
О, зачем? Итак вроде все классически сделано.
 
Назад
Сверху