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 [r]
(1)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 20…… Hiệu trưởng Trường Cao đẳng Kỹ thuật Công nghệ BR-VT)
(2)TUYÊN BỐ BẢN QUYỀN
Nhằm đáp ứng nhu cầu học tập nghiên cứu cho giảng viên sinh viên nghề Công nghệ Thông tin trường Cao đẳng Kỹ thuật Công nghệ Bà Rịa – Vũng Tàu, chúng tơi thực biên soạn tài liệu Lập trình web PHP nâng cao
Tài liệu biên soạn thuộc loại giáo trình phục vụ giảng dạy học tập, lưu hành nội Nhà trường nên nguồn thơng tin phép dùng ngun trích dùng cho mục đích đào tạo tham khảo
(3)LỜI GIỚI THIỆU
Giáo trình “Lập trình web PHP nâng cao” biên soạn dựa khung chương trình đào tạo Cao đẳng nghề Công nghệ Thông tin 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 số tài liệu, công nghệ đạ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ội dung tác giả trình bày động, dễ hiểu kèm theo bước hướng dẫn thực hành chi tiết theo nguyên tắc quan tâm đến kết đầu ra, khả tự học kỹ cần thiết để HSSV hồn thành ứng dụng web quảng cáo sản phẩm, thương mại điện tử, … ngơn ngữ PHP, ngơn ngữ lập trình ứng dụng web thông dụng nay, đáp ứng nhu cầu thực tế doanh nghiệp
Nội dung giáo trình chia thành 07 bài, đó: Bài 1: Tổng quan
Bài 2: Tạo ứng dụng CodeIgniter 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 trình biên soạn, chắn giáo trình cịn nhiều thiếu sót Tác giả mong nhận ý kiến đóng góp q thầy/cơ em học sinh, sinh viên để tiếp tục hoàn thiện
Xin chân thành cảm ơn quý đồng nghiệp, bạn bè có ý kiến đóng góp trình biên soạn giáo trình
Bà Rịa – Vũng Tàu, ngày …… tháng …… năm ……… Tham gia biên soạn
(4)MỤC LỤC
LỜI GIỚI THIỆU
MỤC LỤC
BÀI 1: TỔNG QUAN
1 Mơ hình MVC
2 CodeIgniter 10
3 Dòng xử lý ứ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 sở liệu 13
2 Tải mã nguồn 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 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 thư mục 24
(5)GỢI Ý, ĐÁP ÁN 25
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 trang 29
3 Tải view 29
4 Truyền liệu đến view 29
5 Form 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 hàm model 34
3.1 Cập nhật hàm GetList (Đọc nhiều dòng liệu) 34
3.2 Cập nhật hàm GetEntry (Đọc dịng liệu theo khóa) 34
3.3 Cập nhật hàm Insert (Thêm dòng liệu) 35
3.4 Cập nhật hàm Update (Cập nhật dòng liệu) 35
3.5 Cập nhật hàm Delete (Xóa dịng liệu) 35
4 Truy xuất CSDL thông qua model 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 liệu 37
(6)(7)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 vai trị mơ đun: Sau học xong Lập trình web PHP & MySQL
Cung cấp cho người học kiến thức kỹ để thiết kế, xây dựng phát triển ứng dụng web theo mơ hình MVC dựa CodeIgniter Framework
Mục tiêu mô đun: Về kiến thức:
+ Trình bày MVC
+ Trình bày trình route xử lý yêu cầu site CodeIgniter + Biết 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 liệu Model, Controller, View + Biết quy trình truy xuất CSDL
- Về kỹ năng:
+ Tải tạo site sử dụng framework CodeIgniter + Tạo Route
+ Tạo Model, Cotroller
+ Định nghĩa thuộc tính, phương thức cho Model + Định nghĩa hàm cho Controller
+ Tạo View cho hàm Controller
+ Xây dựng hàm truy xuất CSDL Model, Controller + Tạo View hiển thị liệu
Về lực tự chủ trách nhiệm:
+ Tham gia xây dựng chức cho website sử dụng framework CodeIgniter
(8)+ Đặt tên tập tin, thư mục quy định
+ Tự tìm hiểu tài liệu nâng cao kiến thức kỹ xây dựng ứng dụng web theo mơ hình MVC
(9)BÀI 1: TỔNG QUAN Mã bài: 22.1
Giới thiệu:
MVC mơ hình ứng dụng web phổ biến Có nhiều framework mã nguồn mở dùng ngơn ngữ PHP với mơ hình MVC, số có framework CodeIgniter
Mục tiêu:
Trình bày thành phần mơ hình MVC Biết lợi ích framework CodeIgniter
Trình bày dịng xử lý CodeIgniter sau tiếp nhận u cầu Tự tìm hiểu thơng tin khác trang CodeIgniter
Đảm bảo an toàn cho người thiết bị Nội dung chính:
1 Mơ hình MVC
Model View Controller mơ hình kiến trúc theo hướng đối tượng, cho phép người phát triển tách ứng dụng thành thành phần chính:
Model: thành phần đại diện cho liệu ứng dụng, bao gồm chức kiểm tra tính hợp lệ liệu
View: thành phần đảm trách việc hiển thị liệu thành phần giao diện người dùng
Controller: thành phần có trách nhiệm tiếp nhận xử lý yêu cầu gửi đến cho ứng dụng, làm nhiệm vụ điều phối công việc View Model Việc phát triển ứng dụng, nâng cấp, bảo trì thử nghiệm trở nên đơn giản dễ dàng
(10)Hình 1.2 Hoạt động 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 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: http://codeigniter.com/userguide3/overview/features.html) 3 Dòng xử lý ứng dụng web CodeIgniter
(11) An toàn: trước controller nạp, yêu cầu HTTP liệu submit lọc
Controller nạp model, thư viện, helper, 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 diễn giải sau gửi cho trình duyệt Nếu cache bật view lưu vào cache trước giải yêu cầu
CÂU HỎI, BÀI TẬP
(12)BÀI 2: TẠO ỨNG DỤNG CODEIGNITER ĐẦU TIÊN Mã bài: 22.2
Giới thiệu:
Bài giúp HSSV tạo site từ mã nguồn CodeIgniter, khảo sát cấu trúc lưu trữ bên site tạo từ framework CodeIgniter
Mục tiêu:
Biết địa để tải framework CodeIgniter
Biết cú pháp URI website viết theo mơ hình MVC Tạo site CodeIgniter framework
Lưu site vào đường dẫn Nội dung chính:
1 Tạo sở liệu
Tạo nhập liệu cho CSDL bookstore theo yêu cầu Table chude
Table nxb
Table tacgia
(13) Table thamgia
Quan hệ
(14)2 Tải mã nguồn tạo site
Bước 1: truy cập trang web http://codeigniter.com
Bước 2: click chuột lên biểu tượng Download để tải mã nguồn
Bước 3: giải nén tập tin tải
Bước 4: copy tập tin thư mục bên vào C:\xampp\htdocs\IgniterSite1 (C:\xampp thư mục củ gói XAMPP cài đặt máy tính)
Hình 2.1 Mã nguồn CodeIgniter
(15)4 Cấu trúc thư mục
Hình 2.2 Cấu trúc tập tin, thư mục bên site CodeIgniter config: chứa tập tin cấu hình
controllers: chứa tập tin định nghĩa controller
models: chứa tập tin định nghĩa lớp đối tượng model views: chứa tập tin giao diện (view)
CÂU HỎI, BÀI TẬP 2.1 Tải mã nguồn tạo site tracuudiem
(16)BÀI 3: ROUTING Mã bài: 22.3
Giới thiệu:
Công việc sau tạo site phải cấu hình Bên cạnh đó, cịn phải định nghĩa route xử lý số yêu cầu đặc biệt bên ứng dụng
Mục tiêu:
Biết trình xử lý yêu cầu site Biết chức route site
Cấu hình cho site CodeIgniter framework Tạo trang đơn giản
Đặt tên tập tin, thư mục 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 cập nhật cho dòng lệnh
(17)1.2 Đọc thơng tin cấu hình Cú pháp
Ví dụ: Mở tập tin application/views/welcome_message.php cập nhật sau:
Truy cập lại trang trình duyệt để xem kết 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 nhập nội dung sau:
(18)B3: Đọc thơng tin cấu hình riêng
Mở tập tin application/views/welcome_message.php cập nhật nội dung sau:
5 Cấu trúc địa chỉ
Địa site theo mô hình MVC có cấu trúc tổng qt sau:
Nếu khơng có method hàm hành động index gọi controller: lớp đối tượng nhận xử lý yêu cầu
method: hàm hành động gọi 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
(19)Ví dụ 4: http://localhost/ignitersite1/index.php/home controller: home
method: index
arguments: khơng có
Ví dụ 5: http://localhost/ignitersite1/index.php
controller: welcome (quy định 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ập nhật lại nội dung sau:
Khi địa truy cập tìm thấy tập tin routes.php xử lý theo quy tắc bên routes.php Ngược lại, yêu cầu xử lý theo cấu trúc tổng quát (đã trình bày Mục 3.1)
Với định nghĩa route trên, controller, method arguments truyền truy cập địa tương ứng 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’
(20)Như phân tích với ví dụ trên, ứng dụng cần phải có controller home với các hàm index view
Tạo tập tin application/controllers/Home.php với nội dung bên
Đã tạo xong controller home với method (hàm hành động) index view Truy cập trang theo địa ví dụ để xem kết
CÂU HỎI, BÀI TẬP
Cập nhật tập tin application/config/routes.php tạo controller để hiển thị kết với địa truy cập tương ứng 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Ủ ĐỀ
http://localhost/ignitersite1/index.php/sach/chude/2 DANH MỤC SÁCH THUỘC CHỦ ĐỀ
http://localhost/ignitersite1/index.php/sach/nxb/6 DANH MỤC SÁCH THUỘC NXB
(21)GỢI Ý, ĐÁP ÁN Tập tin routes.php
Tập tin sach.php
+ Cách 1:
+ Cách 2:
(22)BÀI 4: CONTROLLER Mã bài: 22.4
Giới thiệu:
Thành phần quan trọng tiếp nhận xử lý yêu cầu controller Mục tiêu:
Trình bày khái niệm công dụng Controller Tạo lớp đối tượng kế thừa controller
Tạo hàm hành động controller Đặt tên tập tin quy định
Nội dung chính: 1 Khái niệm
Controller lớp đối tượng dẫn xuất từ CI_Controller, có chức tiếp nhận xử lý yêu cầu route chuyển đến Bên controller chứa hàm (hành động) xử lý theo yêu cầu cụ thể
7 Tạo controller
Mỗi controller định nghĩa tập tin đặt thư mục application/ controllers Mỗi controller lớp đối tượng dẫn suất từ CI_Controller
Cú pháp
<?php
defined(‘BASEPATH’) or exit (‘Truy cap trai phep’); class <TênController> extends CI_Controller{
}
Chú ý: Tên controller phải bắt đầu ký tự In Tên tập tin giống với tên controller, có phần mở rộng php
Ví dụ:
Định nghĩa controller TacGia tập tin application/controllers/TacGia.php
8 Tạo hàm hành động
(23)Truy cập theo địa http://localhost/ignitersite1/index.php/tacgia để xem kết
Tạo thêm hàm hành động cho controller TacGia sau:
9 Tổ chức controller thư mục
Với ứng dụng web lớn, CodeIgniter cho phép nhà phát triển tách/tổ chức controller thư mục Ví dụ: trang/chức quản lý nội dung truy cập theo địa http://localhost/codeignitersite1/quantri
(24)Bước 2: Tạo controller thư mục application/controllers/quantri CÂU HỎI, BÀI TẬP
4.1 Tạo controller Chude, Nxb, Sach với hàm hành động bên trong, tương tự controller Tacgia xây dựng
(25)BÀI 5: VIEW Mã bài: 22.5
Giới thiệu:
View thành phần mơ hình MVC, cơng dụng trao đổi liệu với controller hiển thị kết
Mục tiêu:
Biết khái niệm công dụng view
Thiết kế view tải view hàm controller Truyền liệu từ controller đến view
Truyền liệu từ view đến controller thông qua form Xử lý liệu nhận từ form
Đảm bảo an toàn cho người thiết bị Nội dung chính:
1 Khái niệm
View đơn giản trang web một chức (header, footer, sidebar) đặt bên view khác
View khơng gọi trực tiếp, phải tải lệnh bên controller 10 Tạo view
(26)Trong website có nhiều trang Hầu trang đề có bố cục, chức giống nhau, khác nội dung hiển thị vùng rộng lớn Xét giao diện trên, tài liệu HTML đơn giản sau:
2.1 Tạo view dùng chung
Các trang có bố cục nội dung giống hai thành phần (đã đánh dấu khung chữ nhật) Chúng ta tạo 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
(27)2.2 Tạo view nội dung cho trang
Quy tắc chung: Với controller, tạo thư mục đặt bên application/views Tiếp theo, tạo view đặt bên thư mục vừ tạo Xét controller TacGia mục trước, có hàm index, add edit trang Danh sách tác giả, Thêm tác giả Sửa thông tin tác giả
Bước 1: Tạo thư mục application/views/tacgia
Bước 2: Tạo tập tin application/views/tacgia/index.php để hiển thị nội dung cho hàm index
Lặp lại Bước để tạo tập tin hiển thị nội dung cho hàm add edit 11 Tải view
Cập nhật hàm index controller TacGia để tải view shared/p1.php, shared/p2.php tacgia/index.php
Tương tự vậy, cập nhật hàm _new edit Kiểm tra kết trang theo địa http://localhost/ignitersite1/index.php/tacgia http://localhost/ignitersite1/index.php/tacgia/add http://localhost/ignitersite1/index.php/tacgia/edit/1 12 Truyền liệu đến view
Trong ví dụ bên dưới, truyền danh sách tác giả từ hàm index đến view application/views/tacgia/index.php Hiện tại, chưa truy cập đến CSDL nên sẽ tạo liệu thử dạng mảng
(28)Bước 2: Xử lý liệu nhận view
Cập nhật nội dung tập tin application/views/tacgia/index.php
Kết có truy cập địa
http://localhost/ignitersite1/index.php/tacgia
13 Form view
Bước 1: Cập nhật hàm add controller TacGia
(29)form_open(‘tacgia/store’): tạo thẻ form có thuộc tính method= “post” action= “/index.php/tacgia/store” (dữ liệu chuyển đến hàm store controller TacGia)
Bước 3: Cập nhật hàm store controller TacGia
Kiểm tra kết quả: mở trang http://localhost/ignitersite1/index.php/tacgia/add Không nhập tên, click chuột lên nút Submit Lỗi
Tiếp tục mở lại trang http://localhost/ignitersite1/index.php/tacgia/add Nhập tên, click chuột lên nút Submit Thành công
CÂU HỎI, BÀI TẬP
5.1 Tạo/cập nhật controller view tương ứng để có trang hiển thị Danh sách chủ để, Danh sách NXB (Tạo liệu thử dạng mảng)
(30)BÀI 6: MODEL Mã bài: 22.6
Giới thiệu:
Model đối tượng chứa liệu trao đổi controller view Mục tiêu:
Trình bày khái niệm công dụng Model Tạo model
Tải model controller
Truyền liệu từ model đến view
Viết hàm truy xuất CSDL model Đặt tên hàm quy tắc
Đảm bảo an toàn cho người thiết bị Nội dung chính:
1 Khái niệm
Model lớp đối tượng truy xuất CSDL Ví dụ: để đọc/thêm/xóa/sửa liệu table TacGia, cần tạo model Trong CodeIgniter, model lớp đối tượng dẫn xuất từ CI_Model Mỗi model định nghĩa tập tin, đặt thư mục application/models 2 Tạo model
(31)14 Định nghĩa hàm model
3.1 Cập nhật hàm GetList (Đọc nhiều dòng liệu)
(32)3.3 Cập nhật hàm Insert (Thêm dòng liệu)
3.4 Cập nhật hàm Update (Cập nhật dòng liệu)
3.5 Cập nhật hàm Delete (Xóa dịng liệu)
15 Truy xuất CSDL thông qua model controller Cập nhật tập tin application/controllers/tacgia.php
4.1 Thêm hàm khởi tạo
load->helper: tải thư viện chứa hàm hỗ trợ đọc nhanh thông tin url,
uri, … Có thể mở tập tin system/helpers/url_helper.php xem hàm bên
(33)4.2 Cập nhật hàm index
4.3 Cập nhật tập tin application/views/tacgia/index.php
CÂU HỎI, BÀI TẬP
6.1 Tạo model lại tương ứng với table CSDL bookstore, tương tự tacgia_model thực
(34)BÀI 7: HOÀN CHỈNH CONTROLLER/VIEW Mã bài: 22.7
Giới thiệu:
Ba thành phần mơ hình MVC phối hợp với trình bày cụ thể rõ ràng
Mục tiêu:
Biết quy trình truy xuất CSDL controller Biết quy trình truyền liệu đến view
Tạo trang truy xuất CSDL Đặt tên tập tin quy tắc
Đảm bảo an toàn cho người thiết bị Nội dung chính:
1 Thêm liệu
Cập nhật hàm store torng controller TacGia
16 Cập nhật liệu
(35)Truy cập địa http://localhost/ignitersite1/index.php/tacgia để xem kết Bước 2: Cập nhật hàm edit controller TacGia
Bước 3: Tạo tập tin application/views/tacgia/edit.php
(36)17 Xóa liệu
Cập nhật hàm delete controller TacGia
CÂU HỎI, BÀI TẬP
7.1 Hoàn chỉnh controller, view để có trang danh sách/thêm/xóa/sửa liệu bảng ChuDe
7.2 Hồn chỉnh controller, view để có trang danh sách/thêm/xóa/sửa liệu bảng NXB
(37) http://codeigniter.com/userguide3/overview/features.html) eb http://codeigniter.com http://localhost/ignitersite1/index.php/sach/chude/1 http://localhost/ignitersite1/index.php/sach/xem/13412786 http://localhost/ignitersite1/index.php/home/gioithieu http://localhost/ignitersite1/index.php/home http://localhost/ignitersite1/index.php http://localhost/ignitersite1 http://localhost/ignitersite1/index.php/home/lienhe http://localhost/ignitersite1/index.php/sach http://localhost/ignitersite1/index.php/sach/chude/2 http://localhost/ignitersite1/index.php/sach/nxb/6 http://localhost/ignitersite1/index.php/sach/tacgia/9 http://localhost/ignitersite1/index.php/tacgia http://localhost/codeignitersite1/quantri http://localhost/ignitersite1/index.php/tacgia/add http://localhost/ignitersite1/index.php/tacgia/edit/1