如何將server端的檔案刪除,也就是刪除資料後,一併將該相關檔案刪除:
舉例:index.php、photodel.php兩個網頁
資料庫欄位舉例:p_id(自動編號、主鍵)、p_name(紀錄檔案名稱及副檔名)
存放檔案的路徑:photo/
步驟一:在index.php頁面的表單插入二個隱藏欄位,p_id及p_name,而其值分別是資料庫欄位的p_id及p_name。
驟二:index.php頁面做法跟刪除資料的做法與設定一樣,然後主索引鍵值選"表單變數"旁邊的空白欄位輸入p_id,全都設定好之後按下確定後,在程式碼內容裡加上下面一段語法:先找到這一行:
先找到這一行:
$Result1 = mysql_query($deleteSQL, $delfile) or die(mysql_error());
在這一行之後,在找到這一行:
$deleteGoTo = "photodel.php";
在這二行中間的任何一個地方,加上下面二行程式碼
$photo = $_POST['p_name'];
unlink("photo/$photo");
這樣只要一個頁面就完成了,這個程式主要的重點在於unlink()這個函式,它的作用就是叫php去刪除指定的檔案,而它的函式原型如下:
unlink("要刪除的檔案存放路徑與要刪除的檔案名稱");
那為什麼要放在
$Result1 = mysql_query($deleteSQL, $delfile) or die(mysql_error());
之後
$deleteGoTo = "photodel.php";
之前呢?其實只要放在
header(sprintf("Location: %s", $deleteGoTo));
一行之前先執行unlink()函式就可以了,因為
header(sprintf("Location: %s", $deleteGoTo));
這一行的意思就是轉址,轉向你原本在刪除記錄後所要前往的網頁,所以unlink()函式一定要在
header(sprintf("Location: %s", $deleteGoTo));
之前執行,而為什麼要放在
$Result1 = mysql_query($deleteSQL, $delfile) or die(mysql_error());
之後,主要是因為if判斷式的關係,在你插入刪除記錄行為的時候,dw會自動加入一個if判斷式,判斷表單變數是否存在,而會要在
$Result1 = mysql_query($deleteSQL, $delfile) or die(mysql_error());
之後,主要是要確保unlink()這個函式會在if判斷式之內,避免程式發生錯誤。
另外下面延伸閱讀推薦的那二本書也都有提到相同的內容,而且寫的更詳細,推薦給有需要的朋友。
延伸閱讀:
挑戰Dreamweaver CS4互動網站百寶箱:使用PHP
精通Dreamweaver CS4與PHP & MySQL實例整合應用經典
如果覺得這篇文章對您有所幫助,在觀看完文章之餘,希望能點選下方方廣告,當作是對YOGO的支持,讓YOGO更有寫作的動力。
沒有留言:
張貼留言