2011-06-23 295 views
1

我已經設置了一個簡單的while循環,它返回表中的所有圖像以及它們各自的標題和描述,以便用戶可以相應地更新每個圖像的細節。搭配取消鏈接()與sql刪除

的圖像與一個複選框,它允許用戶刪除圖像按PHP代碼返回

if($_POST['doDelete'] == 'Delete') { 

if(!empty($_POST['u'])) { 
    foreach ($_POST['u'] as $uid) { 
     $id = filter($uid); 
     mysql_query("delete from landscape where id='$id'"); 
    } 
} 
$ret = $_SERVER['PHP_SELF'] . '?'.$_POST['query_str'];; 

header("Location: $ret"); 
exit(); 
} 

如何納入unlink()功能到頁面,以便該文件也從服務器上刪除?

+0

只需在'mysql_query'之後添加'unlink(foo)'? – Dogbert

+0

你真的應該逃避你的查詢變量... –

+0

@Michael:'$ id = filter($ uid)'似乎在做詭計? – Cyclone

回答

0

如果圖像命名按照ID:

foreach ($_POST['u'] as $uid) { 
    $id = filter($uid); 
    mysql_query("delete from landscape where id='$id'"); 
    unlink('/path/to/images/' . $id); 
} 

請務必在您的查詢或取消鏈接語句中使用它之前,適當地$ ID。

+0

你在'unlink'聲明後忘了';' – Cyclone

+0

@Cyclone:已修復。謝謝。 –

+0

在上面的代碼,然後,如果圖像存儲在/ images/landscape /它如何識別正確的文件名以取消鏈接 - 是否必須指定(例如使用'images/landscape/<?php echo $ rrows [ 'imagesrc'];?>'....? 或者當放射對框被選中時,下面的工作。 foreach($ _POST ['u'] as $ uid){ $ id = filter($ uid); mysql_query(「從景觀刪除其中id ='$ id'」); unlink('/ images/landscape /'。$ id); } 如果事情變得更簡單,我會很高興發佈我的整個代碼,而不僅僅是上面的代碼片段 謝謝! – JD2011

-1

那麼,存儲在服務器上的文件在哪裏呢?他們如何存儲?只需調用unlink並指定存儲圖像的文件路徑即可。

+0

它們存儲在服務器上的文件夾/ images/landscape/ 我也在mysql中指定了一個imagesrc字段,例如「images/landscape/1.jpg」,所以我可以簡單地使用這個字段來取消鏈接。 ..? 對不起,我的愚蠢 - 沒有聽說過直到今天取消鏈接,因爲以前存儲的圖像作爲數據庫中的BLOB,並且不想錯誤地刪除所有內容! – JD2011

+0

是的,然後解除鏈接。它會工作。 – Cyclone

+0

這個答案不是很有幫助。這更像是一個評論。 – Martin

1

中環只需使用Unlink()與像:

foreach ($_POST['u'] as $uid) { 
    $id = filter($uid); 
    if(mysql_query("delete from landscape where id='$id'")){ 
    unlink('/path/to/images/' . $id); 
    } 
} 

我用If因爲如果文件從數據庫中刪除成功才把它就會從服務器中刪除。 此外,如果您已通過文件名移動文件到文件夾,然後先由$id獲取有關從數據庫文件中的信息,然後使用

unlink('/path/to/images/' . $file_name); 

代替

unlink('/path/to/images/' . $id); 

希望它會幫助你。

+0

海事組織這是比接受的答案更好的答案。 – Martin

+0

您還可以添加一個'else'子句來輸出一個'mysql_error()'語句 – Martin

相關問題