Trong bài trước chúng ta đã làm chức năng hiển thị danh sách bài viết. Tiếp theo trong bài này, chúng ta sẽ viết tiếp 2 chức năng sửa và xóa bài viết để hoàn tất module bài viết.
Đang xem: Hướng dẫn tạo các chức năng thêm sửa xóa mvc php, bài 13: làm chức năng sửa và xóa bài viết
Vì là trang chỉnh sửa bài viết, nên nội dung của chúng có phần sẽ giống với phần thêm bài viết, chỉ khác là các ô nhập liệu giờ đây đã có dữ liệu. Dữ liệu này chúng ta tiến hành lấy từ cơ sở dữ liệu thông qua biến truyền mà ở danh sách bài viết đã gửi editPost.php?postId=$id. Biến $id sẽ là giá trị id của bài viết mà chúng ta truyền vào.
Sau khi thiết kế xong phần giao diện, để hiển thị chúng ta cần require nó trong controller, tạo file Controller/admin/editPost.php:
Chạy chương trình theo đường dẫn:http://localhost/blog/View/admin/?controller=editPost&postId=$idđể xem kết quả, biến $id sẽ là id bài viết mà bạn muốn chỉnh sửa.
Để tiện cho việc chỉnh sửa, chúng ta cần in những nội dung cũ mà ta đã thêm trước đó vào form chỉnh sửa. Viết hàm getPost trong file để thực hiện thao tác lấy dữ liệu bài viết theo id.
Xem thêm: Phần Mềm Tính Điểm Tb Môn Cho Học Sinh Và Sinh Viên Trong Excel
public function getPost($postId){$sql = “https://obatambeienwasirherbal.com/SELECT * FROM posts WHERE id = $postId”https://obatambeienwasirherbal.com/;$result = $this->db->conn->query($sql);$data = $result->fetch_array();return $data;
Ta thấy trong form sửa bài viết có mục chọn chuyên mục, để hiện thị toàn bộ chuyên mục thì chúng ta cần lấy tất cả chuyên mục có trong CSDL, sửa file Controller/admin/editPost thành:
<?phpclass EditPost {public function __construct(){require_once(“https://obatambeienwasirherbal.com/../../Model/admin/category.php”https://obatambeienwasirherbal.com/);require_once(“https://obatambeienwasirherbal.com/../../Model/admin/post.php”https://obatambeienwasirherbal.com/);$categoryModel = new categoryModel;$postModel = new PostModel;if (isset($_GET<"https://obatambeienwasirherbal.com/postId"https://obatambeienwasirherbal.com/>)) {$postId = $_GET<"https://obatambeienwasirherbal.com/postId"https://obatambeienwasirherbal.com/>;$categories = $categoryModel->categoryList(); /*lấy toàn bộ chuyên mục trong bảng categories*/$postOld = $postModel->getPost($postId);require(“https://obatambeienwasirherbal.com/pages/post/edit.php”https://obatambeienwasirherbal.com/);}}}
Hiển thị dữ liệu cũ trong form chỉnh sửa bài viết, khi đó file View/admin/pages/post/edit.php trở thành:
Sau khi đã làm xong các bước ở trên, cuối cùng chúng ta bắt tay vào làm chức năng sửa bài viết. Viết hàmeditPost bên Model, hàm nàycó chức năngchỉnh sửa bài viết trong file Model/admin/post.php:
public function editPost($id, $title, $slug, $summary, $content, $categoryId, $image){$title = $this->db->conn->real_escape_string($title);$slug = $this->db->conn->real_escape_string($slug);$summary = $this->db->conn->real_escape_string($summary);$content = $this->db->conn->real_escape_string($content);$sql = “https://obatambeienwasirherbal.com/UPDATE posts SET title = “https://obatambeienwasirherbal.com/$title”https://obatambeienwasirherbal.com/, slug = “https://obatambeienwasirherbal.com/$slug”https://obatambeienwasirherbal.com/, summary = “https://obatambeienwasirherbal.com/$summary”https://obatambeienwasirherbal.com/, content = “https://obatambeienwasirherbal.com/$content”https://obatambeienwasirherbal.com/, category_id = “https://obatambeienwasirherbal.com/$categoryId”https://obatambeienwasirherbal.com/, image = “https://obatambeienwasirherbal.com/$image”https://obatambeienwasirherbal.com/ WHERE id = $id “https://obatambeienwasirherbal.com/;return $this->db->conn->query($sql);}
<?phpclass EditPost {public function __construct(){require_once(“https://obatambeienwasirherbal.com/../../Model/admin/category.php”https://obatambeienwasirherbal.com/);require_once(“https://obatambeienwasirherbal.com/../../Model/admin/post.php”https://obatambeienwasirherbal.com/);$categoryModel = new categoryModel;$postModel = new PostModel;if (isset($_GET<"https://obatambeienwasirherbal.com/postId"https://obatambeienwasirherbal.com/>)) {$postId = $_GET<"https://obatambeienwasirherbal.com/postId"https://obatambeienwasirherbal.com/>;$categories = $categoryModel->categoryList(); /*lấy toàn bộ chuyên mục trong bảng categories*/$postOld = $postModel->getPost($postId);if (isset($_POST<"https://obatambeienwasirherbal.com/editPost"https://obatambeienwasirherbal.com/>)) {$title = $_POST<"https://obatambeienwasirherbal.com/title"https://obatambeienwasirherbal.com/>;$slug = changeTitle($title);$summary = $_POST<"https://obatambeienwasirherbal.com/summary"https://obatambeienwasirherbal.com/>;$content = $_POST<"https://obatambeienwasirherbal.com/content"https://obatambeienwasirherbal.com/>;$categoryId = $_POST<"https://obatambeienwasirherbal.com/category_id"https://obatambeienwasirherbal.com/>;/** * Nếu không chọn ảnh thì lấy tên ảnh trong input có name là image_old * Ngược lại thì lấy tên ảnh theo $slug và lưu vào Public/upload/post * Tiến hành sửa bài viết bằng hàm editPost bên Model *
var array */if (isset($_FILES<"https://obatambeienwasirherbal.com/image"https://obatambeienwasirherbal.com/>) && $_FILES<"https://obatambeienwasirherbal.com/image"https://obatambeienwasirherbal.com/><"https://obatambeienwasirherbal.com/error"https://obatambeienwasirherbal.com/> > 0) {$image = $_POST<"https://obatambeienwasirherbal.com/image_old"https://obatambeienwasirherbal.com/>;} else {$ext = pathinfo($_FILES<"https://obatambeienwasirherbal.com/image"https://obatambeienwasirherbal.com/><"https://obatambeienwasirherbal.com/name"https://obatambeienwasirherbal.com/>, PATHINFO_EXTENSION);$image = $slug . “https://obatambeienwasirherbal.com/.”https://obatambeienwasirherbal.com/ . $ext;move_uploaded_file($_FILES<"https://obatambeienwasirherbal.com/image"https://obatambeienwasirherbal.com/><"https://obatambeienwasirherbal.com/tmp_name"https://obatambeienwasirherbal.com/>, “https://obatambeienwasirherbal.com/../../Public/upload/posts/”https://obatambeienwasirherbal.com/ . $image);}$postModel->editPost($postId, $title, $slug, $summary, $content, $categoryId, $image);}require(“https://obatambeienwasirherbal.com/pages/post/edit.php”https://obatambeienwasirherbal.com/);}}}
Như vậy mình đã hướng dẫn các bạn hoàn thành chức năng sửa bài viết. Nếu có gì không hiểu hãy comment bên dưới để được giải đáp. Chúc các bạn thành công!.
Đối với trang xóa dữ liệu, chúng ta cũng không cần phải xử lý quá nhiều. Bởi nhiệm vụ của chúng chỉ đơn giản là xóa đi những dòng trong bảng.
Xem thêm: Cung Hoàng Đạo Của 12 Con Giáp Theo Cung Hoàng Đạo, 12 Cung Hoàng Đạo
public function deletePost($postId){$sql = “https://obatambeienwasirherbal.com/DELETE FROM posts WHERE id = $postId”https://obatambeienwasirherbal.com/;return $this->db->conn->query($sql);}
Tiếp theo bên Controller, gọi hàmdeletePost để thực hiện xóa bài viết, tạo file Controller/admin/deletePost.php và thưc thi các lệnh sau:
<?phpclass DeletePost {public function __construct(){require_once(“https://obatambeienwasirherbal.com/../../Model/admin/post.php”https://obatambeienwasirherbal.com/);$postModel = new PostModel();if (isset($_GET<"https://obatambeienwasirherbal.com/postId"https://obatambeienwasirherbal.com/>)) {$postId = $_GET<"https://obatambeienwasirherbal.com/postId"https://obatambeienwasirherbal.com/>;$postModel->deletePost($postId);header(“https://obatambeienwasirherbal.com/Location: ?controller=listPost”https://obatambeienwasirherbal.com/);}require(“https://obatambeienwasirherbal.com/pages/category/add.php”https://obatambeienwasirherbal.com/);}}
Như vậy mình đã hướng dẫn các bạn hoàn thành chức năng sửa và xóa bài viết. Nếu có gì không hiểu hãy comment bên dưới để được giải đáp.