2016-11-27 32 views
0

我每次更新圖片時都必須手動進入我的文件夾。圖像將更新爲新圖像。但是,當我更新圖像時,舊圖像未被刪除。我正在使用PHP函數取消鏈接來刪除圖像,但由於某種原因,它不起作用。我已經從代碼中的php unlink中刪除了「@」符號。我已重新編輯編碼的代碼。我不斷收到以下錯誤:爲什麼取消鏈接功能在上傳圖片時不會刪除舊圖片

警告:取消鏈接(圖片/):權限使用C否認:\ XAMPP \ htdocs中\的upload_update \ NEW_PROJECT \ edit_image.php上線24

我試圖教自己的PHP , 非常感謝你的幫助。

這是代碼:

<?php 
include "connection.php"; 
$vid=""; 
$vname=""; 
$vprice=""; 
$vpicture=""; 



if(isset($_POST["button_edit"])){ 
    $product_name = $_POST["product_name"]; 
    $product_price = $_POST["product_price"]; 
    $product_id = $_POST["product_id"]; 
    $old_picture = $_POST['old_picture']; 
    if(!empty($_FILES["product_picture"]["name"])) { 
    $product_picture = $_FILES["product_picture"]["name"]; 
    $qry = mysqli_query($con,"Update table_product Set product_name='$product_name', product_price='$product_price', product_picture='$product_picture' Where product_id='$product_id'"); 

     $target_dir = "picture/"; 
     $target_file = $target_dir . basename($_FILES["product_picture"]["name"]); 
     $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION); 
    move_uploaded_file($_FILES["product_picture"]["tmp_name"],$target_file); 
    if (isset($old_picture) && ($old_picture != $product_picture)) { 
       unlink("picture/" . $old_picture); 
      } 
    } 
    else{ 
$qry = "Update table_product Set product_name='$product_name', product_price='$product_price' Where product_id='$product_id'"; 
} 

$qryUpdate = mysqli_query($con,$qry); 
    } 

else if(isset($_GET["edit"])){ 
    $qry = mysqli_query($con,"Select * From table_product Where product_id='".$_GET["edit"]."'"); 
    while($row=mysqli_fetch_array($qry,MYSQLI_ASSOC)){ 
     $vid=$row["product_id"]; 
     $vname=$row["product_name"]; 
     $vprice=$row["product_price"]; 
     $vpicture=$row["product_picture"]; 
    } 
} 
?> 

<!DOCTYPE html> 
<html> 
<head> 
<title>Product</title> 
</head> 
<body> 
<form action='<?php echo $_SERVER["PHP_SELF"]; ?>' method="post" enctype="multipart/form-data" > 
    <table> 
     <tr> 
      <td>Product ID</td> 
      <td><input type="text" name="product_id" value="<?php echo $vid;?>"></td></tr> 
     <tr><td>Product Name</td> 
     <td><input type="text" name="product_name" value="<?php echo $vname;?>"></td></tr> 
     <tr><td>Product Price</td> 
     <td><input type="text" name="product_price" value="<?php echo $vprice;?>"></td></tr> 
     <input type="hidden" name="old_picture" value="<?php if (!empty($old_picture)) echo $old_picture; ?>" /> 
     <tr><td>Product Picture</td> 
     <td><input type="file" name="product_picture" ></td></tr> 
     <?php if (!empty($old_picture)) { 
     echo '<img class="profile" src="picture/' . $old_picture . '" alt="image" style=width:150px;height:xpx;">'; 
     } ?> 
     <tr><td colspan="2"> 
     <input type="submit" name="button_add" value="Add"> 
     <input type="submit" name="button_edit" value="Edit"></td></tr> </table> 
</form> 
<table border=1> 
    <tr><th>product ID</th><th>product Name</th> 
    <th>product price</th><th>product image</th> <th>Action</th></tr> 
    <?php 
    $qry =mysqli_query($con, "Select * From table_product"); 
    while($row=mysqli_fetch_array($qry,MYSQLI_ASSOC)){ 
     echo '<tr><td>'.$row["product_id"].'</td>'; 
     echo '<td>'.$row["product_name"].'</td>'; 
     echo '<td>'.$row["product_price"].'</td>'; 
     echo '<td><img src="picture/'.$row["product_picture"].'" style=width:100px;height:xpx;"/></td>'; 

     echo '<td><a href="?edit='.$row["product_id"].'&picture='.$row["product_picture"].'">Edit</a> </td></tr>'; 



    } 



    ?> 
</table> 
<br><br><br> 
</body> 
</html> 
+2

如果不抑制錯誤也許你會發現爲什麼 – 2016-11-27 23:49:14

+0

最有可能是一個權限問題。查看文件夾和文件權限 – khuderm

+0

「未定義索引:圖片」意味着在您的$ _GET請求中,沒有稱爲圖片的變量。由於這是在檢查$ _POST請求的代碼塊中,我的猜測是GET請求中沒有設置變量。簡短回答:在問號'?'後檢查網址中是否有任何內容 – fredrover

回答

-1

從該行刪除@標誌:

@unlink("picture/".$_GET["picture"]) 

這可能會顯示一個警告。 使用絕對路徑文件要取消鏈接,而不是相對所以你unlink看起來應該

@unlink(__DIR__."/picture/".$_GET["picture"]); 
+0

我已從代碼中的php unlink中刪除了「@」符號。這些是2錯誤我一直得到: 說明:未定義指數:圖象在C:\ XAMPP \ htdocs中\的upload_update \ NEW_PROJECT \ edit_image.php上線22 警告:的unlink(圖片/):權限用C被拒絕: \ xampp \ htdocs \ upload_update \ New_project \ edit_image.php在22行。感謝您的時間。 –

+0

檢查你的$ _GET數組是否包含'picture'索引,cause,warning告訴你這個索引不存在於$ _GET中 – piotr