Bài giảng Lab 8: Xây dụng lớp truy xuất cơ sở dữ liệu trình bày khai thác lớp truy xuất cơ sở dữ liệu PDO; xây dựng lớp Db để truy xuất cơ sở dữ liệu cơ bản sử dụng lớp PDO để truy xuất cơ sở dữ liệu mysql; các lớp kế thừa lớp Db phù hợp với từng nhóm chức năng; Xây dựng cấu trúc, vị trí các đối tượng cho website; Hiện thực một số chức năng căn bản .
LAB 8: Xây dụng lớp truy xuất CSDL Mục tiêu - Tìm hiểu khai thác lớp truy xuất CSDL PDO - Xây dựng lớp Db để truy xuất csdl sử dụng lớp PDO để truy xuất csdl mysql - Xây dựng lớp kế thừa lớp Db phù hợp với nhóm chức - Xây dựng cấu trúc, vị trí đối tượng cho website - Hiện thực số chức Tóm tắt lý thuyết Lớp truy xuất csdl PDO: - PDO (PHP Data Object): API cung cấp cho để kết nối thao tác với CSDL, chuyển liệu thành đối tượng để dễ thao tác - PDO hỗ trợ thao tác nhiều CSDL khác - Sử dụng PDO, quan tâm nhiều tới csdl sử dụng để lưu trữ Khi thay đổi CSDL, ta không cần thay đổi code viết Class: Định nghĩa class: class Class_name{ //Các thuộc tính class //Các phương thức class } Các bổ từ: Mỗi thuộc tính hay function khai báo sau từ khóa: public (mặc định), private, protected - Phần tử đặt sau public, truy xuất từ bên ngồi lớp, lớp kế thừa sang class Phần tử đặt sau protected: Chỉ phép truy xuất từ class kế thừa sang class Phần tử đặt sau private: truy xuất từ lớp định nghĩa Khơng thể truy xuất từ ngồi lớp không kế thừa sang class Truy xuất: - Để truy xuất đến thành phần class hay thể phần tử, ta sử dụng toán tử -> Truy xuất phần tử từ bên class, sử dụng $this->thành_phần Hàm tạo, hàm hủy: - Hàm tạo: tự động thực thi tạo thể class: public function construct(){} /* : hai ký tự gạch */ Hàm hủy: hàm tự động thực thi đối tượng bị hủy public function destruct() {} Kế thừa: Tính kế thừa để tái sử dụng lại thuộc tính phương thức định nghĩa class có Lớp định nghĩa ban đầu gọi lớp sở Lớp kế thừa từ lớp sở gọi lớp kế thừa Khi kế thừa, thành phần có thuộc tính public protected lớp sở sử dụng lớp kế thừa Để class B kế thừa từ class A, ta sử dụng từ khóa extends: Class B extends A{} Khi xây dựng website, ta thường đặt class vào tập tin riêng biệt tên với class vừa định nghĩa để tiện sử dụng (ví dụ: class A đặt file A.class.php) Khi sử dụng class nào, ta dung câu lệnh include hay require để load class cần thiết vào trang web Để load class vào trang web cách tự động, ta định nghĩa hàm xác định vị trí class, sau khai báo hàm với php hàm spl_autoload_register; Để in nội dung đối tượng class, ta sử dụng hàm print_r hay var_dump $x = new A(); print_r($x); Các ví dụ sau sử dụng kết nối tới database mysql có tên bookstore File csdl đặt thư mục database Sinh viên load csdl vào mysql trước thực thi ví dụ Ví dụ 3.1 Ví dụ lab8_1.php sử dụng PDO để truy vấn select liệu mysql csdl hiển thị kết lên trình duyệt web a Kết nối tới csdl b Viết sql c Thực thi sql câu lệnh query lớp PDO, kết trả lớp PDOStatement d Lấy số dòng kết quả: i Số dòng trả câu sql select 3.2 3.3 3.4 ii Số dòng liệu bị thay đổi câu lệnh:insert, update, delete e Lấy tất liệu trả (với sql select) theo cách lưu trữ ý muốn: i PDOStatement->fetchAll(): Lấy tất ii PDOStatement->fetch(): Lấy dịng Ví dụ lab8_2.php: sử dụng truy vấn select cập nhật liệu (insert, update, delete) với cách viết sử dụng tham số đặt chỗ a Viết sql có tham số đặt chỗ trước b Sử dụng phương thức PDO->prepare($sql), kết trả đối tượng lớp PDOStatement c Tạo mảng tham số đặt chỗ trước tương ứng với tham số sql d Thực thi sql phương thức PDOStatement->execute($array) Ví dụ lab8_3.php: xây dựng chức thêm, sửa, xóa, hiển thị với table đơn giản: category Ví dụ Thư mục lab8_4 chứa tồn nội dung ví dụ Đây thư mục chứa thư mục file phục vụ cho website Trong Ví dụ này: Thư mục classes chứa class để truy xuất CSDL bookstore trang index.php load class Db để hiển thị thông tin từ database cài đặt - File cấu hình cho site đặt config/config.php - Các hàm file sử dụng chung đặt thư mục include - Mỗi sách có hình đại diện tên file hình lưu trữ table book, field img Hình thực sách nằm thư mục image/book - Trang index.php include file cấu hình (config/config.php) file chứa function.php Hàm loadClass function.php cho phép ta load file chứa class tương ứng dựa vào class ta cần sử dụng - Qui ước vị trí file đặt tên class: Mỗi class ta định nghĩa file php, đặt thư mục classes Tên class: Bắt đầu ký tự chữ hoa Tên file: đặt theo qui tắc: tên_class.class.php Ví dụ class A lưu trong: classes/A.class.php (tên file phân biệt hoa-thường) File classes/Db.class.php lưu trữ định nghĩa class Db 3.5 Ví dụ 5: Thư mục lab8_5: Kế thừa từ ví dụ 4, ví dụ phân tích chia nhỏ trang xây dựng số chức đơn giản website - a Trang chủ: chia làm nhiều vùng Các vùng header, left, right đặt vào thư mục include để load ngược lại trang chủ b Một số module: book, news xây dựng đặt thư mục module Mỗi module có nhiều chức riêng, ta điều khiển thông qua biến $ac (action) Vận dụng 4.1 4.2 4.3 Dựa vào lab8_2.php, xây dựng trang tìm kiếm book theo tên nhập vào từ form Dựa vào lab8_3.php để xây dựng chức thêm, hiển thị, xóa cho table book Xây dựng class Book kế thừa từ class Db làm chức giống 4.2 Nâng cao 5.1 Trong thư mục lab8_5, xây dựng thêm class: News, User, Cart kế thừa từ class Db a Class News: Sử dụng để quản lý tin tức Class có phương thức: list(): Trả danh sách tin, detail: trả tin theo ID, b Class User: Sử dụng cho quản lý người sử dụng: đăng ký, đăng nhập, sửa đổi thông tin,… c Class Cart: hiển thị quản lý giỏ hàng 5.2 Xây dựng chức phân trang sách hiển thị ... sử dụng lại thuộc tính phương thức định nghĩa class có Lớp định nghĩa ban đầu gọi lớp sở Lớp kế thừa từ lớp sở gọi lớp kế thừa Khi kế thừa, thành phần có thuộc tính public protected lớp sở sử dụng. . .Truy xuất: - Để truy xuất đến thành phần class hay thể phần tử, ta sử dụng toán tử -> Truy xuất phần tử từ bên class, sử dụng $this->thành_phần Hàm tạo, hàm... dụ 3.1 Ví dụ lab8 _1.php sử dụng PDO để truy vấn select liệu mysql csdl hiển thị kết lên trình duyệt web a Kết nối tới csdl b Viết sql c Thực thi sql câu lệnh query lớp PDO, kết trả lớp PDOStatement