2012-02-16 64 views
0

我目前有一張表格,列出了我的頁面上數據庫中的所有「產品」。每個產品/列表旁邊都有一個複選框,因此您可以一次刪除多個產品。 我有刪除功能與複選框很好,從數據庫中刪除選定的產品,但我似乎無法得到下半年的工作,這是需要進入名爲「畫廊」的服務器目錄的部分,並刪除屬於已刪除產品的圖像。
取消鏈接()刪除服務器上的圖像以及SQL刪除

當有人點擊刪除按鈕,它運行這段代碼:

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

     } 

    } 

它甚至不會做「回聲$文件」部分這讓我覺得心不是代碼的那一部分在運行所有。任何幫助?

更新的代碼交換之後:

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


    } 

回答

1

在傳遞字符串時,您需要執行$ 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 
} 
+0

這工作謝謝你!雖然我確實需要將「while($ deleteImage = mysql_fetch_array($ deleteImgQuery))」改爲「while($ deleteImage = mysql_fetch_array($ res))」 謝謝! – Catia 2012-02-16 17:56:08

+0

哦..忘了編輯代碼。現在更新。感謝和快樂的編碼.. – monish 2012-02-16 18:50:23

2

您需要交換的第一和第二部分。您正嘗試選擇已刪除的數據。

+0

$ deleteQuery必須調用AFTER $ deleteImgQuery – Vessimir 2012-02-16 16:31:24

+0

謝謝!它仍然沒有工作。仍然不會回顯$文件。我將更新現在的代碼。 – Catia 2012-02-16 16:37:56

+0

你試過echo $ deleteImgQuery嗎? – Vessimir 2012-02-16 16:45:46