unlink () для удаления изображений с сервера вместе с SQL delete - PullRequest
0 голосов
/ 16 февраля 2012

У меня в настоящее время есть таблица, в которой перечислены все "продукты", которые есть в базе данных на моей странице.Рядом с каждым продуктом / списком есть флажок, чтобы вы могли удалить несколько продуктов одновременно.У меня есть функция удаления, хорошо работающая с флажками, удаляющая выбранные продукты из базы данных, но я не могу заставить работать вторую половину, которая является частью, которая должна перейти в каталог сервера с именем "gallery" иудаление изображения, которое относится к продуктам, которые были удалены.

Когда кто-то нажимает кнопку удаления, он запускает следующий код:

   //if form was submitted
   if ($submit && $submit == "Delete") {
        //escaping all of them for a MySQL query using array_map
        array_map ('mysql_real_escape_string', $allCheckBoxId);
        //implode will concatenate array values into a string divided by commas
        $ids = implode(",", $allCheckBoxId);
        //building query
        $deleteQuery = "DELETE FROM products WHERE `id` IN ($ids)";
        //running query
        mysql_query($deleteQuery);


            echo $ids;


        //BELOW IS THE PART THAT WILL NOT WORK
        //================================================

        //building query
        $deleteImgQuery = "SELECT * FROM products WHERE `id` IN ($ids)";


        while ($deleteImage = mysql_fetch_array($deleteImgQuery)) {

            $image_delete_id = $deleteImage['id'];
            $image_delete_image = $deleteImage['image'];


            $file= "../gallery/" . $image_delete_id . "/" . $image_delete_image;

            unlink($file);

            echo $file;

        }

   }

Он даже не выполняет часть "echo $ file", которая заставляет меня думать, что эта часть кодане работает вообще.Любая помощь?

ОБНОВЛЕННЫЙ КОД ПОСЛЕ SWAP:

   //if form was submitted
   if ($submit && $submit == "Delete") {


        //escaping all of them for a MySQL query using array_map
        array_map ('mysql_real_escape_string', $allCheckBoxId);
        //implode will concatenate array values into a string divided by commas
        $ids = implode(",", $allCheckBoxId);


        //building query
        $deleteImgQuery = "SELECT * FROM products WHERE `id` IN ($ids)";


        while ($deleteImage = mysql_fetch_array($deleteImgQuery)) {

            $image_delete_id = $deleteImage['id'];
            $image_delete_image = $deleteImage['image'];


            $file= "../gallery/" . $image_delete_id . "/" . $image_delete_image;

            unlink($file);

            echo $file;

        }


        //building query
        $deleteQuery = "DELETE FROM products WHERE `id` IN ($ids)";
        //running query
        mysql_query($deleteQuery);


        echo $ids;


   }

Ответы [ 2 ]

2 голосов
/ 16 февраля 2012

Вам нужно поменять местами первую и вторую часть. Вы пытаетесь выбрать уже удаленные данные.

1 голос
/ 16 февраля 2012

Вам необходимо выполнить ресурс $ deleteImgQuery и mysql_fetch_array в качестве параметра при передаче строки.Измените следующие строки ..

//building query
$deleteImgQuery = "SELECT * FROM products WHERE `id` IN ($ids)";
$res = mysql_query($deleteImgQuery);

while ($deleteImage = mysql_fetch_array($res)) {
// do
}
...