0

現在、私のページのデータベースにあるすべての「製品」をリストしたテーブルがあります。複数の商品を一度に削除できるように、各商品/リストの横にチェックボックスがあります。チェックボックスで削除機能がうまく機能し、選択した製品をデータベースから削除しましたが、「ギャラリー」という名前のサーバーディレクトリに移動する必要がある部分である後半が機能していないようです。削除された商品に属する画像を削除します。

誰かが削除ボタンをクリックすると、次のコードが実行されます。

   //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」部分さえ実行しません。何か助けはありますか?

スワップ後の更新コード:

   //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;


   }
4

2 に答える 2

2

最初の部分と 2 番目の部分を交換する必要があります。すでに削除されたデータを選択しようとしています。

于 2012-02-16T16:30:12.830 に答える
1

文字列を渡すときに、 $deleteImgQuery および mysql_fetch_array get resource をパラメータとして実行する必要があります。次の行を変更します。

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

while ($deleteImage = mysql_fetch_array($res)) {
// do
}
于 2012-02-16T16:45:46.023 に答える