MVC là một design pattern được dùng vào hầu hết các web framework và GUI framework, gồm có:Ruby On Rails: Một webframework viết trên Ruby rất thịnh hành.Apple Cocoa: Apple’s framework cho phát triển các ứng dụng Mac OS và iOS.ASP.Net Framework: Microsoft’s webframework để phát triển các ứng dụng web trên .NET.Apache Struts: Một Java webframework rất phổ biến… và rất nhiều framework khác.
Bài 2: Model Mục tiêu Mô hình lớp Database Xây dựng Model Xây dựng lớp Database Phần lớn ứng dụng web sử dụng sở liệu Do nhóm Model cần có lớp Database giúp kết nối sở dũ liệu Cần xây dựng số phương thức lớp Database để thao tác với CSDL như: Kết nối sở liệu Tạo truy vấn, thực truy vấn Lấy liệu trả liệu dạng mảng đối tượng Xây dựng lớp Database class Database{ var $_dbh = ''; var $_sql = ''; var $_cursor = NULL; /* Các phương thức Phương thức khởi tạo, thực kết nối đến CSDL Thiết lập câu lệnh truy vấn Lấy dòng CSDL gán vào cho mảng đối tượng Lấy dòng CSDL lưu chúng vào mảng đối tượng Lấy dòng thỏa mãn điều kiện CSDL gán cho đối tượng Đếm số dòng kết Trả id cuối bảng Ngắt kết nối */ PDO/ of 22 Xây dựng lớp Database Phương thức khởi tạo, kết nối đến csdl class Database{ public function Database() { try { $this->_dbh = new PDO('mysql:host=tên_host; dbname=tên_CSDL', 'username', 'password'); $this->_dbh->query('set names "utf8"'); $this->_dbh>setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $e){ exit('Khong ket noi duoc co so du PDO/ of 22 Xây dựng lớp Database Phương thức thiết lập câu lệnh truy vấn class Database{ public function setQuery($sql) { $this->_sql = $sql; } } PDO/ of 22 Xây dựng lớp Database Phương thức thực thi câu lệnh truy vấn class Database{ public function execute($options=array()) { try{ $this->_cursor = $this->_dbh>prepare($this->_sql); $this->_cursor>execute($options); return $this->_cursor; } catch(PDOException $e){ return false;} } } PDO/ of 22 Xây dựng lớp Database Phương thức lấy liệu bảng gán vào mảng đối tượng class Database{ public function loadAllRows($options=array()) { if(!$options) { if(!$result = $this->execute()) return false; } else { if(!$result = $this->execute($options)) return false; } return $result->fetchAll(PDO::FETCH_OBJ); } } PDO/ of 22 Xây dựng lớp Database Phương thức lấy dòng liệu bảng gán vào đối tượng class Database{ public function loadRow($option=array()) { if(!$option) { if(!$result = $this->execute()) return false; } else { if(!$result = $this->execute($option)) return false; } return $result->fetch(PDO::FETCH_OBJ); } } PDO/ of 22 Xây dựng lớp Database Phương thức đếm số dòng bảng class Database{ public function tong_so_dong($option=array()) { if(!$option) { if(!$result = $this->execute()) return false; } else { if(!$result = $this->execute($option)) return false; } return $this->_cursor->rowCount(); } } PDO/ 10 of 22 Xây dựng lớp Database Phương thức lấy id phát sinh cho dòng vừa chèn vào bảng class Database{ public function getLastId() { return $this->_dbh->lastInsertId(); } } PDO/ 11 of 22 Xây dựng lớp Database Phương thức ngắt kết nối class Database{ public function disconnect() { $this->_dbh = NULL; } } PDO/ 12 of 22 Xây dựng Model Sau có lớp Database, cần phân tích yêu cầu website để biết cần phải xây dựng lớp Model Trong lớp Model thường có phương thức khởi tạo phương thức cần thiết Lấy thông tin Thêm thông tin Cập nhật thông tin Xóa thông tin PDO/ 13 of 22 Xây dựng Model Ví dụ lớp model M_mon_an với phương thức: Lấy danh sách ăn (để hiển thị ăn) Lấy chi tiết ăn(để hiển thị chi tiết ăn) Lấy danh sách ăn theo loại(cho phần giới thiệu ăn người dùng chọn loại món) Thêm ăn Cập nhật thông tin ăn … Cấu trúc bảng mon_an PDO/ 14 of 22 Xây dựng Model Khai báo lớp M_mon_an include_once("database.php") class M_mon_an extends Database { /* Các phương thức lớp M_mon_an Lấy danh sách ăn Lấy chi tiết ăn Lấy danh sách ăn theo loiạ Thêm ăn */ } PDO/ 15 of 22 Xây dựng Model Phương thức lấy danh sách ăn include_once("database.php") class M_mon_an extends Database { public function layDanhsachMonan() { $sql = "SELECT ma_mon, ma_loai, ten_mon, noi_dung_tom_tat, noi_dung_chi_tiet, don_gia, don_gia_khuyen_mai, khuyen_mai, hinh, ngay_cap_nhat, dvt, trong_ngay FROM mon_an;"; $this->setQuery($sql); return $this->loadAllRows(); } } PDO/ 16 of 22 Xây dựng Model Phương thức lấy chi tiết ăn include_once("database.php") class M_mon_an extends Database { public function layMonanTheoMa($ma_mon) { $sql = "SELECT ma_mon, ma_loai, ten_mon, noi_dung_tom_tat, noi_dung_chi_tiet, don_gia, don_gia_khuyen_mai, khuyen_mai, hinh, ngay_cap_nhat, dvt, trong_ngay FROM mon_an WHERE ma_mon=?"; $this->setQuery($sql); return $this->loadRow(array($ma_mon)); } PDO/ 17 of 22 Xây dựng Model Phương thức lấy danh sách ăn theo loại include_once("database.php") class M_mon_an extends Database { public function layMonanTheoLoai($ma_loai) { $sql = "SELECT ma_mon, ma_loai, ten_mon, noi_dung_tom_tat, noi_dung_chi_tiet, don_gia, don_gia_khuyen_mai, khuyen_mai, hinh, ngay_cap_nhat, dvt, trong_ngay FROM mon_an WHERE ma_loai=?"; $this->setQuery($sql); return $this->loadRow(array($ma_loai)); } PDO/ 18 of 22 Xây dựng Model Phương thức thêm ăn include_once("database.php") class M_mon_an extends Database { public function themMonan( $ma_loai, $ten_mon, $noi_dung_tom_tat, $noi_dung_chi_tiet, $don_gia, $_don_gia_khuyen_mai, $khuyen_mai, $hinh, $ngay_cap_nhat, $dvt, $trong_ngay) { $sql = "INSERT INTO mon_an(ma_loai, ten_mon, noi_dung_tom_tat, noi_dung_chi_tiet, don_gia, don_gia_khuyen_mai, khuyen_mai, hinh, ngay_cap_nhat, dvt, trong_ngay) VALUES (?,?,?,?,?,?,?,?,?,?,?)"; return $this->execute(array($ma_loai, $noi_dung_tom_tat, $khuyen_mai, $hinh, $noi_dung_chi_tiet, $ngay_cap_nhat, $don_gia, $dvt, $ten_mon, $_don_gia_khuyen_mai, $trong_ngay)); } } PDO/ 19 of 22 Xây dựng Model Phương thức cập nhật thông tin ăn include_once("database.php") class M_mon_an extends Database { public function suaMonan($ma_mon, $ten_mon, $noi_dung_tom_tat, $khuyen_mai, $hinh, $ma_loai, $noi_dung_chi_tiet, $don_gia, $_don_gia_khuyen_mai, $ngay_cap_nhat, $dvt, $trong_ngay) { $sql = "UPDATE mon_an SET ma_loai=?,ten_mon=?,noi_dung_tom_tat=?,noi_dung_chi_tiet=?,don_gia=?,don_gia_khuyen _mai=?,khuyen_mai=?,hinh=?,ngay_cap_nhat=?,dvt=?,trong_ngay=? WHERE ma_mon = ?"; return $this->execute(array($ma_loai, $ten_mon, $noi_dung_tom_tat, $khuyen_mai, $hinh, $noi_dung_chi_tiet, $don_gia, $_don_gia_khuyen_mai, $ngay_cap_nhat, $dvt, $trong_ngay, $ma_mon)); } } PDO/ 20 of 22 Xây dựng Model Phương thức xóa ăn include_once("database.php") class M_mon_an extends Database { public function xoaMonan($ma_mon) { $sql = "DELETE FROM mon_an WHERE ma_mon = ?"; return $this>execute(array($ma_mon)); } } PDO/ 21 of 22 [...]... public function getLastId() { return $this->_dbh->lastInsertId(); } } PDO/ 11 of 22 Xây dựng lớp Database Phương thức ngắt kết nối class Database{ public function disconnect() { $this->_dbh = NULL; } } PDO/ 12 of 22 Xây dựng Model Sau khi đã có lớp Database, cần phân tích yêu cầu của website để biết cần phải xây dựng các lớp Model nào Trong mỗi lớp Model thường có các phương thức khởi tạo và... dvt, trong_ ngay FROM mon_an WHERE ma_loai=?"; $this->setQuery($sql); return $this->loadRow(array($ma_loai)); } PDO/ 18 of 22 Xây dựng Model Phương thức thêm món ăn mới include_once("database .php" ) class M_mon_an extends Database { public function themMonan( $ma_loai, $ten_mon, $noi_dung_tom_tat, $noi_dung_chi_tiet, $don_gia, $_don_gia_khuyen_mai, $khuyen_mai, $hinh, $ngay_cap_nhat, $dvt, $trong_ ngay)... noi_dung_tom_tat, noi_dung_chi_tiet, don_gia, don_gia_khuyen_mai, khuyen_mai, hinh, ngay_cap_nhat, dvt, trong_ ngay FROM mon_an WHERE ma_mon=?"; $this->setQuery($sql); return $this->loadRow(array($ma_mon)); } PDO/ 17 of 22 Xây dựng Model Phương thức lấy danh sách món ăn theo loại món include_once("database .php" ) class M_mon_an extends Database { public function layMonanTheoLoai($ma_loai) { $sql = "SELECT... ma_loai, ten_mon, noi_dung_tom_tat, noi_dung_chi_tiet, don_gia, don_gia_khuyen_mai, khuyen_mai, hinh, ngay_cap_nhat, dvt, trong_ ngay FROM mon_an;"; $this->setQuery($sql); return $this->loadAllRows(); } } PDO/ 16 of 22 Xây dựng Model Phương thức lấy chi tiết một món ăn include_once("database .php" ) class M_mon_an extends Database { public function layMonanTheoMa($ma_mon) { $sql = "SELECT ma_mon, ma_loai,... don_gia_khuyen_mai, khuyen_mai, hinh, ngay_cap_nhat, dvt, trong_ ngay) VALUES (?,?,?,?,?,?,?,?,?,?,?)"; return $this->execute(array($ma_loai, $noi_dung_tom_tat, $khuyen_mai, $hinh, $noi_dung_chi_tiet, $ngay_cap_nhat, $don_gia, $dvt, $ten_mon, $_don_gia_khuyen_mai, $trong_ ngay)); } } PDO/ 19 of 22 Xây dựng Model Phương thức cập nhật thông tin món ăn include_once("database .php" ) class M_mon_an extends Database { public... Xây dựng Model Khai báo lớp M_mon_an include_once("database .php" ) class M_mon_an extends Database { /* Các phương thức trong lớp M_mon_an 1 Lấy danh sách món ăn 2 Lấy chi tiết một món ăn 3 Lấy danh sách các món ăn theo loiạ món 4 Thêm món ăn mới */ } PDO/ 15 of 22 Xây dựng Model Phương thức lấy danh sách món ăn include_once("database .php" ) class M_mon_an extends Database { public function layDanhsachMonan()... $ngay_cap_nhat, $dvt, $trong_ ngay) { $sql = "UPDATE mon_an SET ma_loai=?,ten_mon=?,noi_dung_tom_tat=?,noi_dung_chi_tiet=?,don_gia=?,don_gia_khuyen _mai=?,khuyen_mai=?,hinh=?,ngay_cap_nhat=?,dvt=? ,trong_ ngay=? WHERE ma_mon = ?"; return $this->execute(array($ma_loai, $ten_mon, $noi_dung_tom_tat, $khuyen_mai, $hinh, $noi_dung_chi_tiet, $don_gia, $_don_gia_khuyen_mai, $ngay_cap_nhat, $dvt, $trong_ ngay, $ma_mon));... tin PDO/ 13 of 22 Xây dựng Model Ví dụ lớp model M_mon_an với các phương thức: Lấy danh sách món ăn (để hiển thị các món ăn) Lấy chi tiết một món ăn(để hiển thị chi tiết một món ăn) Lấy danh sách các món ăn theo loại(cho phần giới thiệu món ăn khi người dùng chọn một loại món) Thêm món ăn mới Cập nhật thông tin món ăn … Cấu trúc bảng mon_an PDO/ 14 of 22 Xây dựng Model Khai báo lớp M_mon_an... $ten_mon, $noi_dung_tom_tat, $khuyen_mai, $hinh, $noi_dung_chi_tiet, $don_gia, $_don_gia_khuyen_mai, $ngay_cap_nhat, $dvt, $trong_ ngay, $ma_mon)); } } PDO/ 20 of 22 Xây dựng Model Phương thức xóa món ăn include_once("database .php" ) class M_mon_an extends Database { public function xoaMonan($ma_mon) { $sql = "DELETE FROM mon_an WHERE ma_mon = ?"; return $this>execute(array($ma_mon)); } } PDO/ 21 ... $this->_dbh = NULL; } } PDO/ 12 of 22 Xây dựng Model Sau có lớp Database, cần phân tích yêu cầu website để biết cần phải xây dựng lớp Model Trong lớp Model thường có phương thức khởi tạo phương...Mục tiêu Mô hình lớp Database Xây dựng Model Xây dựng lớp Database Phần lớn ứng dụng web sử dụng sở liệu Do nhóm Model cần có lớp Database giúp kết nối sở dũ liệu Cần xây... thông tin Thêm thông tin Cập nhật thông tin Xóa thông tin PDO/ 13 of 22 Xây dựng Model Ví dụ lớp model M_mon_an với phương thức: Lấy danh sách ăn (để hiển thị ăn) Lấy chi tiết ăn(để