2012-02-16 63 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