BM/QT10/P.ĐTSV/04/04
Ban hành lần: 3
UBND TỈNH BÀ RỊA – VŨNG TÀU
TRƯỜNG CAO ĐẲNG KỸ THUẬT CƠNG NGHỆ
GIÁO TRÌNH
MƠ ĐUN LẬP TRÌNH WEB PHP NÂNG CAO
NGHỀ: CƠNG NGHỆ THƠNG TIN
TRÌNH ĐỘ: CAO ĐẲNG
(Ban hành kèm theo Quyết định số: ……/QĐ-CĐKTCN, ngày … tháng … năm
…… của Hiệu trưởng Trường Cao đẳng Kỹ thuật Công nghệ BR-VT)
BÀ RỊA – VŨNG TÀU
1
TUYÊN BỐ BẢN QUYỀN
Nhằm đáp ứng nhu cầu học tập và nghiên cứu cho giảng viên và sinh viên
nghề Công nghệ Thông tin trong trường Cao đẳng Kỹ thuật Công nghệ Bà Rịa –
Vũng Tàu, chúng tôi đã thực hiện biên soạn tài liệu Lập trình web PHP nâng
cao.
Tài liệu được biên soạn thuộc loại giáo trình phục vụ giảng dạy và học tập,
lưu hành nội bộ trong Nhà trường nên các nguồn thơng tin có thể được phép
dùng ngun bản hoặc trích dùng cho các mục đích về đào tạo và tham khảo.
Mọi mục đích khác mang tính lệch lạc hoặc sử dụng với mục đích kinh
doanh thiếu lành mạnh sẽ bị nghiêm cấm.
LỜI GIỚI THIỆU
Giáo trình “Lập trình web PHP nâng cao” được biên soạn dựa trên khung
chương trình đào tạo Cao đẳng nghề Công nghệ Thông tin đã được Trường Cao
đẳng Kỹ thuật Công nghê Bà Rịa – Vũng Tàu phê duyệt.
Tác giả đã nghiên cứu một số tài liệu, công nghệ hiện đại kết hợp với kinh
nghiệm làm việc thực tế để viết nên giáo trình này. Nội dung được tác giả trình
bày cơ động, dễ hiểu kèm theo các bước hướng dẫn thực hành chi tiết theo
nguyên tắc quan tâm đến kết quả đầu ra, khả năng tự học và kỹ năng cần thiết để
HSSV có thể hồn thành ứng dụng web quảng cáo sản phẩm, thương mại điện
tử, … bằng ngôn ngữ PHP, một trong những ngôn ngữ lập trình ứng dụng web
thơng dụng hiện nay, đáp ứng nhu cầu thực tế của doanh nghiệp.
Nội dung giáo trình được chia thành 07 bài, trong đó:
Bài 1: Tổng quan
Bài 2: Tạo ứng dụng CodeIgniter đầu tiên
Bài 3: Routing
Bài 4: Controller
Bài 5: View
Bài 6: Model
Bài 7: Hoàn chỉnh Controller/View
Trong quá trình biên soạn, chắc chắn giáo trình cịn nhiều thiếu sót. Tác giả
rất mong nhận được ý kiến đóng góp của quý thầy/cô và các em học sinh, sinh
viên để tiếp tục hoàn thiện hơn.
Xin chân thành cảm ơn quý đồng nghiệp, bạn bè đã có những ý kiến đóng
góp trong quá trình biên soạn giáo trình này.
Bà Rịa – Vũng Tàu, ngày …… tháng …… năm ………
Tham gia biên soạn
1. Phan Hữu Phước – Chủ biên
1
MỤC LỤC
LỜI GIỚI THIỆU..................................................................................................1
MỤC LỤC.............................................................................................................3
BÀI 1: TỔNG QUAN...........................................................................................9
1. Mơ hình MVC.................................................................................................9
2. CodeIgniter....................................................................................................10
3. Dòng xử lý của ứng dụng web CodeIgniter..................................................10
CÂU HỎI, BÀI TẬP...........................................................................................11
BÀI 2: TẠO ỨNG DỤNG CODEIGNITER ĐẦU TIÊN...................................13
1. Tạo cơ sở dữ liệu...........................................................................................13
2. Tải mã nguồn và tạo site...............................................................................15
3. Cấu trúc thư mục...........................................................................................16
CÂU HỎI, BÀI TẬP...........................................................................................16
BÀI 3: ROUTING...............................................................................................17
1. Cấu hình site..................................................................................................17
1.1. Nhập thơng tin cấu hình chung.....................................................................17
1.2. Đọc thơng tin cấu hình.................................................................................18
1.3. Tạo thơng tin cấu hình riêng.........................................................................18
2. Cấu trúc địa chỉ.............................................................................................19
3. Cấu hình route mặc định...............................................................................20
CÂU HỎI, BÀI TẬP...........................................................................................21
GỢI Ý, ĐÁP ÁN.................................................................................................22
BÀI 4: CONTROLLER.......................................................................................23
1. Khái niệm......................................................................................................23
2. Tạo controller................................................................................................23
3. Tạo hàm hành động.......................................................................................23
4. Tổ chức controller trong thư mục..................................................................24
CÂU HỎI, BÀI TẬP...........................................................................................25
GỢI Ý, ĐÁP ÁN.................................................................................................25
3
BÀI 5: VIEW.......................................................................................................27
1. Khái niệm......................................................................................................27
2. Tạo view........................................................................................................27
2.1. Tạo view dùng chung...................................................................................28
2.2. Tạo view nội dung cho các trang..................................................................29
3. Tải view.........................................................................................................29
4. Truyền dữ liệu đến view................................................................................29
5. Form trên view..............................................................................................30
CÂU HỎI, BÀI TẬP...........................................................................................31
BÀI 6: MODEL...................................................................................................33
1. Khái niệm......................................................................................................33
2. Tạo model......................................................................................................33
3. Định nghĩa các hàm trong model..................................................................34
3.1. Cập nhật hàm GetList (Đọc nhiều dòng dữ liệu).........................................34
3.2. Cập nhật hàm GetEntry (Đọc một dòng dữ liệu theo khóa).........................34
3.3. Cập nhật hàm Insert (Thêm một dịng dữ liệu)............................................35
3.4. Cập nhật hàm Update (Cập nhật một dòng dữ liệu).....................................35
3.5. Cập nhật hàm Delete (Xóa một dịng dữ liệu)..............................................35
4. Truy xuất CSDL thông qua model trong controller......................................35
4.1. Thêm hàm khởi tạo.......................................................................................35
4.2. Cập nhật hàm index......................................................................................36
4.3. Cập nhật tập tin application/views/tacgia/index.php....................................36
CÂU HỎI, BÀI TẬP...........................................................................................36
GỢI Ý, ĐÁP ÁN.................................................................................................36
BÀI 7: HOÀN CHỈNH CONTROLLER/VIEW.................................................37
1. Thêm dữ liệu.................................................................................................37
2. Cập nhật dữ liệu............................................................................................37
3. Xóa dữ liệu....................................................................................................39
4
CÂU HỎI, BÀI TẬP...........................................................................................39
TÀI LIỆU THAM KHẢO...................................................................................41
5
GIÁO TRÌNH MƠ ĐUN
Tên mơ đun: Lập trình web PHP nâng cao
Mã mơ đun: MĐ29
Vị trí, tính chất, ý nghĩa và vai trị của mơ đun:
Sau khi học xong Lập trình web PHP & MySQL
Cung cấp cho người học kiến thức và kỹ năng để có thể thiết kế, xây dựng
và phát triển ứng dụng web theo mô hình MVC dựa trên CodeIgniter
Framework.
Mục tiêu của mơ đun:
Về kiến thức:
+
+
+
+
+
+
Trình bày được MVC
Trình bày quá trình route và xử lý yêu cầu trong site CodeIgniter
Biết các bước tạo website PHP sử dụng framework CodeIgniter
Trình bày quy trình xây dựng Model, Controller
Trình bày quy trình truyền dữ liệu Model, Controller, View
Biết quy trình truy xuất CSDL
- Về kỹ năng:
+
+
+
+
+
+
+
+
Tải và tạo site sử dụng framework CodeIgniter
Tạo Route
Tạo Model, Cotroller
Định nghĩa các thuộc tính, phương thức cho Model
Định nghĩa các hàm cho Controller
Tạo View cho các hàm trong Controller
Xây dựng các hàm truy xuất CSDL trong Model, Controller
Tạo các View hiển thị dữ liệu
Về năng lực tự chủ và trách nhiệm:
+ Tham gia xây dựng các chức năng cho website sử dụng framework
CodeIgniter.
+ Có thể vận dụng để xây dựng website thương mại, quảng bá chuyên
nghiệp bằng các framework, CMS mã nguồn mở: Wordpress, Joomla, …
+ Lưu site đúng đường dẫn
+ Đặt tên tập tin, thư mục đúng quy định
+ Tự tìm hiểu tài liệu nâng cao kiến thức và kỹ năng xây dựng ứng dụng
web theo mô hình MVC
Nội dung của mơ đun:
7
BÀI 1: TỔNG QUAN
Mã bài: 22.1
Giới thiệu:
MVC là mơ hình ứng dụng web phổ biến hiện nay. Có nhiều framework mã
nguồn mở dùng ngơn ngữ PHP với mơ hình MVC, trong số đó có framework
CodeIgniter.
Mục tiêu:
Trình bày các thành phần trong mơ hình MVC
Biết lợi ích của framework CodeIgniter
Trình bày dòng xử lý của CodeIgniter sau khi tiếp nhận yêu cầu
Tự tìm hiểu các thơng tin khác trên trang CodeIgniter
Đảm bảo an tồn cho người và thiết bị
Nội dung chính:
1. Mơ hình MVC
Model View Controller là một mơ hình kiến trúc theo hướng đối tượng, cho
phép người phát triển tách một ứng dụng thành 3 thành phần chính:
Model: thành phần đại diện cho dữ liệu của ứng dụng, bao gồm cả chức
năng kiểm tra tính hợp lệ của dữ liệu.
View: thành phần đảm trách việc hiển thị dữ liệu và các thành phần trong
giao diện người dùng.
Controller: thành phần có trách nhiệm tiếp nhận và xử lý các yêu cầu gửi
đến cho ứng dụng, làm nhiệm vụ điều phối công việc giữa View và Model.
Việc phát triển ứng dụng, nâng cấp, bảo trì và thử nghiệm trở nên đơn giản và
dễ dàng hơn.
Hình 1.1. Các thành phần trong mơ hình MVC
8
Hình 1.2. Hoạt động của mơ hình MVC
2. CodeIgniter
Là mã nguồn mở giúp dễ dàng xây dựng ứng dụng web theo mơ hình MVC
bằng ngơn ngữ PHP với nhiều ưu điểm.
Miễn phí
Dung lượng nhỏ
Nhanh
Tạo URL rõ ràng theo SEO
Khơng u cầu engine
Có đầy đủ thư viện hỗ trợ việc truy xuất CSDL, xử lý gửi/nhận email, hình
ảnh, upload tập tin
Hỗ trợ xử lý phân trang
…
(Xem thêm: />3. Dòng xử lý của ứng dụng web CodeIgniter
Tập tin index.php khởi tạo các nguồn tài nguyên cần thiết.
Route phân tích u cầu để quyết định cơng việc cần xử lý.
Nếu tập tin cache đã có, sẽ được gửi trực tiếp đến trình duyệt.
9
An toàn: trước khi controller được nạp, yêu cầu HTTP và dữ liệu nào được
submit đều được lọc.
Controller nạp model, thư viện, helper, và các nguồn tài nguyên cần thiết
khác để xử lý đáp ứng cho yêu cầu cụ thể.
Cuối cùng, view được diễn giải sau đó gửi cho trình duyệt. Nếu cache được
bật thì view được lưu vào cache trước rồi mới giải quyết yêu cầu.
CÂU HỎI, BÀI TẬP
1.1. Tên và chức năng của các thành phần trong mơ hình MVC?
1.2. Dịng xử lý của ứng dụng web CodeIgniter?
10
BÀI 2: TẠO ỨNG DỤNG CODEIGNITER ĐẦU TIÊN
Mã bài: 22.2
Giới thiệu:
Bài này giúp HSSV tạo site mới từ mã nguồn CodeIgniter, khảo sát cấu trúc
lưu trữ bên trong site được tạo từ framework CodeIgniter.
Mục tiêu:
Biết địa chỉ để tải framework CodeIgniter
Biết cú pháp URI trong website được viết theo mô hình MVC
Tạo site bằng CodeIgniter framework
Lưu site vào đúng đường dẫn
Nội dung chính:
1. Tạo cơ sở dữ liệu
Tạo và nhập dữ liệu cho CSDL bookstore theo yêu cầu dưới.
Table chude
Table nxb
Table tacgia
Table sach
11
Table thamgia
Quan hệ
Dữ liệu
2. Tải mã nguồn và tạo site
Bước 1: truy cập trang web
Bước 2: click chuột lên biểu tượng Download để tải mã nguồn
12
Bước 3: giải nén tập tin đã tải
Bước 4: copy các tập tin và thư mục bên trong vào C:\xampp\htdocs\IgniterSite1
(C:\xampp là thư mục củ gói XAMPP đã được cài đặt trên máy tính)
Hình 2.1. Mã nguồn CodeIgniter
Bước 5: Tạo IgniterSite1 đến C:\xampp\htdocs\IgniterSite1 trong DreamWeaver
13
4. Cấu trúc thư mục
Hình 2.2. Cấu trúc tập tin, thư mục bên trong site CodeIgniter
config: chứa các tập tin cấu hình
controllers: chứa các tập tin định nghĩa controller
models: chứa các tập tin định nghĩa lớp đối tượng model
views: chứa các tập tin giao diện (view)
CÂU HỎI, BÀI TẬP
2.1. Tải mã nguồn và tạo site tracuudiem
2.2. Tên thư mục chứa các tập tin cấu hình?
14
BÀI 3: ROUTING
Mã bài: 22.3
Giới thiệu:
Công việc ngay sau khi tạo mới một site là phải cấu hình. Bên cạnh đó, cịn
phải định nghĩa route xử lý một số u cầu đặc biệt bên trong ứng dụng.
Mục tiêu:
Biết quá trình xử lý yêu cầu của site
Biết chức năng của route trong site
Cấu hình cho site CodeIgniter framework
Tạo một trang đơn giản
Đặt tên tập tin, thư mục đúng quy tắc
Nội dung chính:
1. Cấu hình site
1.1. Nhập thơng tin cấu hình chung
Bước 1: mở tập tin application/config/config.php và cập nhật cho 2 dòng lệnh
Bước 2: mở tập tin application/config/database.php và cập nhật thông tin truy
cập CSDL MySQL
15
1.2. Đọc thơng tin cấu hình
Cú pháp
Ví dụ: Mở tập tin application/views/welcome_message.php và cập nhật như sau:
Truy cập lại trang trên trình duyệt để xem kết quả.
1.3. Tạo thơng tin cấu hình riêng
B1: Tạo tập tin cấu hình application/config/customconfig.php và nhập nội dung
như sau:
B2: Tải tập tin cấu hình riêng. Mở tập tin application/controllers/Welcome.php
và cập nhật cho hàm index
16
B3: Đọc thơng tin cấu hình riêng
Mở tập tin application/views/welcome_message.php và cập nhật nội dung như
sau:
5. Cấu trúc địa chỉ
Địa chỉ site theo mơ hình MVC có cấu trúc tổng qt như sau:
Nếu khơng có method thì hàm hành động index sẽ được gọi.
controller: lớp đối tượng nhận xử lý yêu cầu
method: hàm hành động được gọi của controller
arguments: tham số truyền vào hàm hành động
Ví dụ 1: http://localhost/ignitersite1/index.php/sach/chude/1
controller: sach
method: chude
arguments: id=1
Ví dụ 2: http://localhost/ignitersite1/index.php/sach/xem/13412786
controller: sach
method: xem
arguments: id=13412786
Ví dụ 3: http://localhost/ignitersite1/index.php/home/gioithieu
controller: home
method: gioithieu
arguments: khơng có
Ví dụ 4: http://localhost/ignitersite1/index.php/home
17
controller: home
method: index
arguments: khơng có
Ví dụ 5: http://localhost/ignitersite1/index.php
controller: welcome (quy định trong tập tin application/config/routes.php)
method: index
arguments: khơng có
6. Cấu hình route mặc định
Mở tập tin application/config/routes.php. Xóa hết tất cả và cập nhật lại nội
dung như sau:
Khi địa chỉ truy cập được tìm thấy trong tập tin routes.php thì sẽ được xử lý theo
quy tắc bên trong routes.php. Ngược lại, yêu cầu sẽ được xử lý theo cấu trúc
tổng quát (đã trình bày trong Mục 3.1).
Với định nghĩa route như trên, các controller, method và arguments sẽ được
truyền khi truy cập địa chỉ tương ứng như sau:
Ví dụ 1: http://localhost/ignitersite1
controller: home
method: index
arguments: khơng có
Ví dụ 2: http://localhost/ignitersite1/index.php/home/gioithieu
controller: home
method: view
arguments: id=‘gioithieu’
Ví dụ 3: http://localhost/ignitersite1/index.php/home/lienhe
controller: home
method: view
arguments: id=‘lienhe’
Khi truy cập các địa chỉ trên thì sẽ hiển thị kết quả sau:
18
Như phân tích với các ví dụ trên, ứng dụng cần phải có controller home với các
hàm index và view.
Tạo tập tin application/controllers/Home.php với nội dung bên dưới.
Đã tạo xong controller home với các method (hàm hành động) index và view.
Truy cập trang theo địa chỉ của 3 ví dụ trên để xem kết quả.
CÂU HỎI, BÀI TẬP
Cập nhật tập tin application/config/routes.php và tạo các controller để hiển thị
kết quả với địa chỉ truy cập tương ứng như sau:
http://localhost/ignitersite1/index.php/sach
DANH MỤC SÁCH MỚI
http://localhost/ignitersite1/index.php/sach/chude/1
DANH MỤC SÁCH THUỘC CHỦ ĐỀ 1
http://localhost/ignitersite1/index.php/sach/chude/2
DANH MỤC SÁCH THUỘC CHỦ ĐỀ 2
http://localhost/ignitersite1/index.php/sach/nxb/6
DANH MỤC SÁCH THUỘC NXB 6
http://localhost/ignitersite1/index.php/sach/tacgia/9
DANH MỤC SÁCH THUỘC TÁC GIẢ 9
19
GỢI Ý, ĐÁP ÁN
Tập tin routes.php
Tập tin sach.php
+ Cách 1:
+ Cách 2:
Cập nhật lại tập tin routes.php như thế nào cho phù hợp với cách 2?
20
BÀI 4: CONTROLLER
Mã bài: 22.4
Giới thiệu:
Thành phần quan trọng tiếp nhận và xử lý u cầu chính là controller.
Mục tiêu:
Trình bày khái niệm và công dụng của Controller
Tạo được lớp đối tượng kế thừa controller
Tạo các hàm hành động trong controller
Đặt tên tập tin đúng quy định
Nội dung chính:
1. Khái niệm
Controller là một lớp đối tượng được dẫn xuất từ CI_Controller, có chức năng
tiếp nhận và xử lý yêu cầu được route chuyển đến. Bên trong controller chứa các
hàm (hành động) xử lý theo từng yêu cầu cụ thể.
7. Tạo controller
Mỗi controller được định nghĩa trong một tập tin đặt trong thư mục application/
controllers. Mỗi controller là một lớp đối tượng được dẫn suất từ
CI_Controller.
Cú pháp
defined(‘BASEPATH’) or exit (‘Truy cap trai phep’);
class <TênController> extends CI_Controller{
}
Chú ý: Tên controller phải bắt đầu bằng ký tự In. Tên tập tin giống với tên
controller, có phần mở rộng là .php
Ví dụ:
Định nghĩa controller TacGia trong tập tin application/controllers/TacGia.php
8. Tạo hàm hành động
Mỗi hàm hành động là một phương thức xử lý bên trong controller.
Ví dụ:
21
Truy cập theo địa chỉ http://localhost/ignitersite1/index.php/tacgia để xem kết
quả
Tạo thêm các hàm hành động cho controller TacGia như sau:
9. Tổ chức controller trong thư mục
Với các ứng dụng web lớn, CodeIgniter cho phép nhà phát triển tách/tổ chức các
controller trong thư mục con. Ví dụ: các trang/chức năng quản lý nội dung được
truy cập theo địa chỉ http://localhost/codeignitersite1/quantri
Bước 1: Tạo thư mục application/controllers/quantri
22
Bước 2: Tạo các controller trong thư mục application/controllers/quantri
CÂU HỎI, BÀI TẬP
4.1. Tạo các controller Chude, Nxb, Sach với các hàm hành động bên trong,
tương tự controller Tacgia đã xây dựng ở trên.
GỢI Ý, ĐÁP ÁN
Tham khảo tập tin controller/Tacgia.php
23
BÀI 5: VIEW
Mã bài: 22.5
Giới thiệu:
View là một trong những thành phần trong mơ hình MVC, cơng dụng chính
là trao đổi dữ liệu với controller và hiển thị kết quả.
Mục tiêu:
Biết khái niệm và công dụng của view
Thiết kế được view và tải view trong các hàm controller
Truyền dữ liệu từ controller đến view
Truyền dữ liệu từ view đến controller thông qua form
Xử lý dữ liệu nhận được từ form
Đảm bảo an tồn cho người và thiết bị
Nội dung chính:
1. Khái niệm
View đơn giản là một trang web hoặc một một chức năng (header, footer,
sidebar) đặt bên trong một view khác.
View khơng được gọi trực tiếp, nó phải được tải bằng lệnh bên trong controller.
10. Tạo view
Phân tích giao diện trang web theo hình ảnh ví dụ bên dưới.
25
Trong một website có nhiều trang. Hầu như các trang đề có bố cục, chức năng
giống nhau, chỉ khác nhau về nội dung được hiển thị trên vùng rộng lớn nhất.
Xét giao diện trên, tài liệu HTML đơn giản có thể như sau:
2.1. Tạo view dùng chung
Các trang đều có bố cục và nội dung giống nhau trong hai thành phần (đã được
đánh dấu trong các khung chữ nhật). Chúng ta lần lượt tạo các view tương ứng.
Bước 1: Tạo thư mục application/views/shared
Bước 2: Tạo tập tin application/views/shared/p1.php
Bước 3: Tạo tập tin application/views/shared/p2.php
26