7-9
加入刪除文章功能
- 刪除的SQL語法如下:
DELETE FROM `資料表名稱` [WHERE 篩選條件] [LIMIT 筆數]
- 先確定刪除的按鈕連結無誤
<a href="admin.php?op=destroy&id={$news.id}" class="btn btn-outline-danger">
刪除
</a>
- 編輯
admin.php
,流程加入destroy
switch ($op) {
...略...
// 刪除文章
case 'destroy':
destroy($id);
header("location: index.php");
exit;
// 建立
default:
...略...
}
-
刪除資料前,須先將相關檔案刪除。刪除目錄可以用 rmdir() ,但使用該函數須先刪除檔案後才能刪除目錄,所以,可以到 rmdir() 的頁面,下方就有人寫出刪除整個目錄的方法(我們自己利用 is_dir() 多做個判斷,若是目錄才執行):
// 刪除整個目錄
function delTree($dir)
{
if (is_dir($dir)) {
$files = array_diff(scandir($dir), array('.', '..'));
foreach ($files as $file) {
(is_dir("$dir/$file")) ? delTree("$dir/$file") : unlink("$dir/$file");
}
return rmdir($dir);
}
}
-
接著,就可以完成 destroy()
函式,只要刪掉圖檔目錄,刪掉資料庫就完工了:
// 刪除文章
function destroy($id)
{
global $pdo;
// 刪除整個目錄
delTree("uploads/$id");
// 刪除資料庫資料
$stmt = $pdo->prepare("DELETE FROM `news` WHERE `id` = ?");
$stmt->execute([$id]);
}
-
接著就可以把重複或測試的文章刪一刪囉!