前陣子在摸索 DreamWeaver PHP 時遇到刪除資料又要兼刪除檔案的問題,
之前我的做法是利用上傳產生ID名的目錄,這樣刪除時只要利用ID去開目錄,
接著再撈出目錄下檔案刪除並刪除目錄,這樣子的話我可以利用這方式來刪,

$id=$ck_val;
$dir= '../photo/'.$id.'/';
$dh = opendir($dir); // 開啟目錄
while($file = readdir($dh)){ // 列出目錄內檔案
if(!is_dir($file)){
@unlink($dir.$file); // 刪除檔案
}else{
@rmdir($file); // 刪除目錄
}
}
closedir($dh); // 關閉目錄

不過,在不使用目錄的方式下,研究了一段時間,嘗試了下面方式來做刪除。

將A檔案中表單內的

<input name="ck_del[]" type="checkbox" value="<?php echo $資料表名['id']; ?>" />

透過表單送出後B檔案內,這裡上半部其實還有一段DreamWeaver產生的

if (!function_exists("GetSQLValueString")))...(略過)

 下面接著我是以他內建的刪除方式做些修改來呈現

$deleteGoTo = "刪除完要前往的目標頁面,通常可用A檔案的名稱,例如index.php";
if (isset($_POST['ck_del'], $_POST['ck_del']) && is_array($_POST['ck_del'])){
    $ck_dels = $_POST['ck_del'];
$mysql_affected_rows=0;
foreach($ck_dels as $ck_val){
$id=$ck_val;
$query_reimg = sprintf("SELECT * FROM 資料表名稱 WHERE id = %s",$id); 
$reimg = mysql_query($query_reimg, $localhost) or die(mysql_error()); 
$row_reimg = mysql_fetch_assoc($reimg); 
$img = $row_reimg['url']; //撈出檔名
$dir= '../photo/'.$img; // 將目錄與檔名做組合
@unlink($dir); // 刪除檔案
$deleteSQL = sprintf("DELETE FROM 資料表名稱 WHERE id=%s",$id); // 刪除資料
$Result1 = mysql_query($deleteSQL, $localhost) or die(mysql_error());
$mysql_affected_rows++;
}
echo "<script>alert('已刪除".$mysql_affected_rows."筆')</script>"; // 顯示刪除筆數
echo "<script>window.location.href = '".$deleteGoTo."'</script>"; // 前往自訂頁面
}else{
    echo "<script>alert('刪除失敗,請重新確認')</script>";
echo "<script>window.location.href = '".$deleteGoTo."'</script>";
}  
arrow
arrow

    咖啡 發表在 痞客邦 留言(0) 人氣()