(NB) Bài giảng Lập trình web động với PHP & MYSQL cung cấp các kiến thức cơ bản về: Tổng quan về PHP & MYSQL, cấu trúc điều khiển TRNG PHP, làm việc với dữ liệu FRM, làm việc với dữ liệu mảng TRNG PHP, lập trình hướng đối tượng
TRƢỜNG ĐẠI HỌC SƢ PHẠM KỸ THUẬT HƢNG YÊN KHOA CƠNG NGHỆ CƠNG NGHỆ THƠNG TIN LẬP TRÌNH WEB ĐỘNG VỚI PHP & MYSQL Hƣng Yên (Tài liệu lƣu hành nội bộ) MỤC LỤC BÀI BÀI 01: TỔNG QUAN VỀ PHP VÀ MYSQL 1.1 Ngôn ngữ PHP MySQL 1.1.1 Ngôn ngữ lập mã ngồn mở 1.1.2 Các đặc điểm PHP 1.1.3 Cơ hệ quản trị CSDL mySQL 1.2 Cơ cú pháp ngôn ngữ PHP 1.2.1 Thẻ (tag) trng PHP 1.2.2 Biến, trng PHP 1.2.3 Tán tử trng PHP .10 1.2.4 Lệnh thíc trng PHP 12 1.3 Cài đặt cấu hình máy chủ Apache server 13 BÀI BÀI 02: CẤU TRÚC ĐIỀU KHIỂN TRNG PHP 15 2.1 Cấu trúc rẽ nhánh 15 2.1.1 Câu lệnh if else 15 2.1.2 Câu lênh swicth case 16 2.2 Cấu trúc lặp For 17 2.2.1 Cấu trúc for 17 2.2.2 Cấu trúc foreach .18 2.3 Cấu trúc lặp While 18 2.3.1 cấu trúc whie 18 2.3.2 Cấu trúc while .19 2.4 Lệnh ngắt trng PHP 20 2.4.1 Lệnh Break .20 2.4.2 Lệnh Cntinue 21 BÀI BÀI 03: LÀM VIỆC VỚI DỮ LIỆU FRM 22 3.1 Thẻ PHP kết hợp với HTML 22 3.1.1 Thẻ PHP 22 3.1.2 Ví dụ kết hợp PHP HTML .22 3.2 Nhận liệu từ web 22 3.2.1 Nhận liệu he POST 22 3.2.2 Nhận liệu the GET .23 3.3 Xuất liệu phía trình duyệt 24 3.3.1 Hàm Print 24 3.3.2 Hàm Echo 25 3.4 Nhúng trang PHP trng trang PHP 25 3.4.1 Hàm Include include_one 25 3.4.2 Hàm Require Require_one 25 BÀI LÀM VIỆC VỚI DỮ LIỆU MẢNG TRNG PHP 27 4.1 Định nghĩa mảng trng PHP 27 4.2 Khái niệm mảng kết hợp trng PHP .27 4.3 Thao tác phần tử mảng 27 4.3.1 Đa mảng PHP 30 BÀI LÀM VIỆC VỚI DỮ LIỆU KIỂU XÂU CHUỖI 32 5.1 Chuỗi trng PHP .32 5.2 tán tử tha tác chuỗi 32 5.3 Hàm tha tác chuỗi 32 BÀI LÀM VIỆC VỚI FILE TỆP VÀ UPLAD FILE 36 6.1 Đƣờng dẫn trng PHP .36 6.1.1 Cấu trúc đường dẫn 36 6.1.2 Tha tác với thư mục thông qua đường dẫn 36 6.2 Thao tác với File tệp 37 6.2.1 Các hàm tha tác với File tệp 37 6.2.2 Đọc file 38 6.2.3 Ghi file 39 6.3 Uplad File trng PHP 40 6.3.1 Hàm Uplad file tệp 40 6.3.2 Xây dựng ứng dụng Uplad file tệp 40 BÀI LẬP TRÌNH HƢỚNG ĐỐI TƢỢNG 43 7.1 Khái niệm hàm cách khai báo 43 7.1.1 Khái niệm hàm sử dụng lại mã 43 7.1.2 Cách khai báo hàm trng PHP 43 7.1.3 Hàm tự định nghĩa với giá trị trả 43 7.1.4 Gọi lại hàm trng PHP 44 7.2 Lập tình hƣớng đối tƣợng trng PHP .44 7.3 Khai bá đối tƣợng cách xây dựng 45 7.3.1 Cấu trúc đối tượng 45 7.3.2 Các thành phần đối tượng 46 7.3.3 Một số từ khóa trng lập trình hướng đối trượng .47 7.3.4 Xây dựng lớp 48 BÀI LẬP TRÌNH HƢỚNG ĐỐI TƢỢNG 02 51 8.1 Sử dụng đối tƣợng trng PHP 51 8.1.1 Từ khóa New, this 51 8.1.2 Tán tử tha tác thành phần “->” 51 8.1.3 Sử dụng thuộc tính hàm 51 8.2 Kế thừa trng PHP 53 8.3 Lớp interface 53 8.4 Hàm abstract 54 BÀI LẬP TRÌNH CƠ SỞ DỮ LIỆU VỚI MYSQL 56 9.1 Giới thiệu hệ quản trị CSDL MySQL 56 9.2 Các lệnh MySQL 57 9.3 Kết nối sở liệu MySQL từ PHP 58 9.4 Đọc liệu từ MySQL 59 BÀI 10 LẬP TRÌNH CƠ SỞ DỮ LIỆU VỚI MYSQL 62 10.1 Ghi liệu CSDL mySQL 62 10.2 Cập nhật liệu 62 10.3 Xóa liệu 63 10.4 Một số phƣơng pháp kết nối CSDL 63 BÀI 11 BIẾN ĐỐI TƢỢNG TRNG PHP 68 11.1 Giới thiệu biến phía server 68 11.2 Làm việc với Server 69 11.3 Làm việc Sessin 70 11.4 Làm việc Cookie 72 BÀI 12 TỔNG QUAN VỀ LẬP TRÌNH CDEIGNITER 75 12.1 Giới thiệu Cdeigniter 75 12.2 Đặc điểm CodeIgniter 75 12.3 Cài đặt CodeIgniter 75 12.4 Cấu trúc mdule CodeIgniter 76 12.5 Viết ứng dụng 78 12.6 Thực kết nối CSDL 78 BÀI TL VIẾT ỨNG DỤNG CƠ BẢN TRÊN PHP 82 BÀI TL BÀI TÁN TÌM KIẾM TRÊN XÂU 83 BÀI TL VIẾT WEBSITE THE MÔ HÌNH HƢỚNG ĐỐI TƢỢNG 84 BÀI TL SỬ DỤNG CƠ SỞ DỮ LIỆU THIẾT KẾ WEBSITE 85 BÀI TL XÂY DỰNG GIỎ HÀNG TRÊN PHP 86 BÀI TH 01 CÁC PHÉP TÁN CƠ BẢN 87 BÀI TH 02 THA TÁC VỚI MẢNG VÀ XÂU 91 BÀI TH 03 LÀM VIỆC VỚI DỮ LIỆU TỆP 96 BÀI TH 04 LẬP TRÌNH HƢỚNG ĐỐI TƢỢNG 102 BÀI TH 05: LẬP TRÌNH CƠ SỞ DỮ LIỆU 111 BÀI TH 06: LẬP TRÌNH CƠ SỞ DỮ LIỆU 115 BÀI TH 07 SỬ DỤNG BIẾN ĐỐI TƢỢNG TRONG PHP 121 BÀI TH 08 CÀI ĐẶT KHAI THÁC CODEIGNITER 126 PHẦN LÝ THUYẾT Bài Tổng quan PHP MySQL 1.1 Ngôn ngữ PHP MySQL PHP Hypertext Preprcessr (PHP) ngơn ngữ lập trình ch phép lập trình viên web tạ nội dung động mà tương tác với Database Về bản, PHP sử dụng để phát triển ứng dụng phần mềm web PHP khởi đầu dự án mã nguồn mở nhỏ, the đà phát triển, ngày nhiều người thấy ngày hữu ích PHP phát triển từ sản phẩm có tên PHP/FI PHP/FI d Rasmus Lerdrf tạ năm 1994, ban đầu xem tập cn đơn giản mã kịch Perl để the dõi tình hình truy cập đến sơ yếu lý lịch ơng mạng Ơng đặt tên ch mã kịch "Persnal Hme Page Tls" Khi cần đến chức rộng hơn, Rasmus viết thực thi C lớn để truy vấn tới Database giúp ch người sử dụng phát triển ứng dụng web đơn giản Rasmus định công bố mã nguồn PHP/FI ch người xem, sử dụng sửa lỗi có trng nó, đồng thời cải tiến mã nguồn PHP phát triển nhanh chóng trở thành ngơn ngữ lập trình web phổ biến giới 1.1.1 Ngôn ngữ lập mã ngồn mở Một số đặc điểm quan trọng PHP: PHP viết hồi qui "PHP: Hypertext Preprcessr" PHP ngơn ngữ lập trình kịch viết ch máy chủ mà nhúng trng HTML Nó sử dụng để quản lý nội dụng động, Database, Sessin tracking, … Nó tích hợp với số Database thông dụng MySQL, PstgreSQL, racle, Sybase, Infrmix, Micrsft SQL Server PHP thực thi tuyệt vời, đặc biệt biên dịch Apache Mdule Unix side MySQL Server, khởi động, thực thi truy vấn phức tạp với tập hợp kết khổng lồ trng thời gian Recrd-setting PHP hỗ trợ số lượng rộng rãi gia thức lớn PP3, IMAP, LDAP PHP4 bổ sung hỗ trợ ch Java cấu trúc đối tượng phân phối (CM CRBA) Cú pháp PHP giống C PHP thực hàm hệ thống, ví dụ: từ file hệ thống, tạ, mở, đọc, ghi đóng chúng PHP xử lý frm, ví dụ: thu thập liệu từ file, lưu liệu file, thơng qua email bạn gửi liệu, trả liệu tới người dùng Bạn thêm, xóa, sửa đổi phần tử bên trng Database bạn thông qua PHP Truy cập biến Ckie thiết lập Ckie Sử dụng PHP, bạn hạn chế người dùng truy cập số trang trng Website bạn đặc trưng quan trọng làm PHP trở thành ngôn ngữ phổ biến: Đơn giản hóa Hiệu Bả mật ca Linh động Thân thiện 1.1.2 Các đặc điểm PHP MySQL RDBMS nhanh dễ dàng để sử dụng MySQL sử dụng ch nhiều công việc kinh danh từ lớn tới nhỏ MySQL phát triển, công bố, hỗ trợ MySQL AB, công ty Thụy Điển MySQL trở thành phổ biến nhiều lý d: MySQL mã ngồn mở Vì thế, để sử dụng nó, bạn xu nà MySQL chương trình mạnh mẽ MySQL sử dụng Frm chuẩn ngôn ngữ liệu tiếng SQL MySQL làm việc nhiều Hệ điều hành với nhiều ngôn ngữ PHP, PERL, C, C++, Java, … MySQL làm việc nhanh khỏe với tập liệu lớn MySQL thân thiện với PHP, ngôn ngữ đáng giá để tìm hiểu để phát triển Web MySQL hỗ trợ sở liệu lớn, lên tới 50 triệu hàng hặc nhiều trng bảng Kích cỡ file mặc định giới hạn ch bảng GB, bạn tăng kích cỡ (nếu hệ điều hành bạn xử lý nó) để đạt tới giới hạn lý thuyết TB MySQL điều chỉnh Giấy phép GPL mã nguồn mở ch phép lập trình viên sửa đổi phần mềm MySQL để phù hợp với môi trường cụ thể họ 1.1.3 Cơ hệ quản trị CSDL mySQL MySQL RDBMS nhanh dễ dàng để sử dụng MySQL sử dụng ch nhiều công việc kinh danh từ lớn tới nhỏ MySQL phát triển, công bố, hỗ trợ MySQL AB, công ty Thụy Điển MySQL trở thành phổ biến nhiều lý d: MySQL mã ngồn mở Vì thế, để sử dụng nó, bạn xu nà MySQL chương trình mạnh mẽ MySQL sử dụng Frm chuẩn ngôn ngữ liệu tiếng SQL MySQL làm việc nhiều Hệ điều hành với nhiều ngôn ngữ PHP, PERL, C, C++, Java, … MySQL làm việc nhanh khỏe với tập liệu lớn MySQL thân thiện với PHP, ngôn ngữ đáng giá để tìm hiểu để phát triển Web MySQL hỗ trợ sở liệu lớn, lên tới 50 triệu hàng hặc nhiều trng bảng Kích cỡ file mặc định giới hạn ch bảng GB, bạn tăng kích cỡ (nếu hệ điều hành bạn xử lý nó) để đạt tới giới hạn lý thuyết TB MySQL điều chỉnh Giấy phép GPL mã nguồn mở ch phép lập trình viên sửa đổi phần mềm MySQL để phù hợp với môi trường cụ thể họ 1.2 Cơ cú pháp ngôn ngữ PHP 1.2.1 Thẻ (tag) trng PHP PHP Parser cần cách để phân biệt PHP cde với phần tử khác trng trang web Kỹ thuật thực điều biết với tên: "Escaping t PHP" Có cách để làm điều là: Thẻ PHP tắc Phng cách thẻ PHP hiệu sử dụng phổ biến là: Đây cách để chắn thẻ php ln thơng dịch cách xác Thẻ mở ngắn gọn (SGML-style) Các thẻ có dạng sau: Để sử dụng thẻ bạn thực hặc việc sau để kích hạt PHP để nhận thẻ này: Chọn tùy chọn cấu hình enable-shrt-tags bạn xây dựng PHP Thiết lập cài đặt shrt_pen_tag trng tệp php.ini thành n Tùy chọn phải vơ hiệu hóa để phân tích cú pháp XML với PHP, cú pháp tương tự sử dụng ch thẻ XML Thẻ ASP-style Thẻ ASP-style bắt chước thẻ sử dụng Active Server Pages để phác họa khối cde Các thẻ ASP-style có dạng sau: Để sử dụng thẻ ASP-style, bạn cần thiết lập tùy chọn cấu hình trng tệp php.ini Thẻ HTML script Thẻ script trng HTML có dạng sau: //Cde php Hiển thị văn trình duyệt - Lệnh print lệnh ech Trng PHP, bạn sử dụng hai lệnh print ech để in hình chuỗi nà Với bạn học PHP hai lệnh khơng khác nhiều bạn sử dụng lệnh nà Ví dụ: Ví dụ chương trình PHP Kêt quả: 1.2.2 Biến, trng PHP PHP Parser cần cách để phân biệt PHP cde với phần tử khác trng trang web Kỹ thuật thực điều biết với tên: "Escaping t PHP" Có cách để làm điều là: Thẻ PHP tắc Phng cách thẻ PHP hiệu sử dụng phổ biến là: Đây cách để chắn thẻ php luôn thông dịch cách xác Thẻ mở ngắn gọn (SGML-style) Các thẻ có dạng sau: Để sử dụng thẻ bạn thực hặc việc sau để kích hạt PHP để nhận thẻ này: Chọn tùy chọn cấu hình enable-shrt-tags bạn xây dựng PHP Thiết lập cài đặt shrt_pen_tag trng tệp php.ini thành n Tùy chọn phải vơ hiệu hóa để phân tích cú pháp XML với PHP, cú pháp tương tự sử dụng ch thẻ XML Thẻ ASP-style Thẻ ASP-style bắt chước thẻ sử dụng Active Server Pages để phác họa khối cde Các thẻ ASP-style có dạng sau: Để sử dụng thẻ ASP-style, bạn cần thiết lập tùy chọn cấu hình trng tệp php.ini Thẻ HTML script Thẻ script trng HTML có dạng sau: //Cde php Hiển thị văn trình duyệt - Lệnh print lệnh ech Trng PHP, bạn sử dụng hai lệnh print ech để in hình chuỗi nà Với bạn học PHP hai lệnh khơng khác nhiều bạn sử dụng lệnh nà Ví dụ: Ví dụ chương trình PHP Kêt quả: 1.2.3 Tán tử trng PHP Tán tử gì? Câu trả lời đơn giản từ biểu thức + Ở đây, gọi tán hạng + gọi tán tử Ngôn ngữ PHP hỗ trợ kiểu tán tử sau: 10 Hãy tạo thêm cột trị giá cho bảng hoa_don sau tính trị giá cho hóa đơn cập nhật cho cột trị giá bảng Hãy cập nhật lại giá tiền cho sữa bảng tạm có tên 'canximex': giá 116000 VNĐ Hãy cập nhật lại tên cho khách hàng có mã khách hàng 'KH005': tên 'Lê Duy Anh' Hãy cập nhật lại tên loại sữa: 'sữa chua' thành sữa 'yaourt' Hãy cập nhật lại đơn giá cho sữa hãng sữa Abbott: sữa có đơn giá tăng thêm 3000 VNĐ Hãy xóa khách hàng có mã khách hàng 'KH007' Hãy xóa sữa có trọng lượng nhỏ 200gr có đơn giá nhỏ 10.000 VNĐ có bảng bang_tam 114 Bài TH 06: Lập trình sở liệu Phần Bài tập có hƣớng dẫn Bài Kết nối CSDL MySQLi Bài Kết nối sở liệu PDO Phần Bài tập tự làm Bài Mục đích: Làm quen với cách dùng PHP để kết nối vào MySQL Biết cách chọn CSDL viết câu lệnh truy vấn liệu Làm quen với cách hiển thị liệu lưới (table) Yêu cầu: Tạo trang hiển thị thông tin sau: Yêu cầu chức 115 Stt Đối tượng Yêu cầu xử lý chức trang Thực hiện: luoi_tho_hang_sua Kết nối vào MySQL Chọn CSDL QL_BAN_SUA Đọc bảng HANG_SUA Xuất thông tin hãng sữa dạng lưới thơ (table) hình Bài Mục đích: Ơn lại cách kết hợp PHP MySQL đọc liệu bảng CSDL Làm quen với cách hiển thị liệu có định dạng Yêu cầu: Thiết kế trang hiển thị thông tin khách hàng có định dạng sau Yêu cầu chức Stt Đối tượng Yêu cầu xử lý chức trang Thực hiện: luoi_dinh_dang Kết nối vào MySQL Chọn CSDL QL_BAN_SUA Đọc bảng khach_hang Xuất thông tin khách hàng dạng lưới có định dạng hình trên, đó: dịng tiêu đề có cột canh giữa, chữ in đậm, có màu khác so với dòng nội dung; dòng chẵn dòng lẻ phần nội dung có màu khác nhau; cột giới tính canh Bài Mục đích: Ơn lại cách kết hợp PHP MySQL đọc liệu bảng CSDL Làm quen với cách hiển thị liệu có cột tùy biến Yêu cầu: Thiết kế trang hiển thị thơng tin khách hàng có tùy biến cột giới tính sau 116 Yêu cầu chức Stt Đối tượng Yêu cầu xử lý chức trang Thực hiện: luoi_tuy_bien Kết nối vào MySQL, chọn CSDL QL_BAN_SUA Đọc bảng khach_hang Xuất thông tin khách hàng dạng lưới có định dạng hình trên, đó: dịng tiêu đề có cột canh giữa, chữ in đậm, có màu khác so với dòng nội dung; dòng chẵn dòng lẻ hiển thị nội dung có màu khác Cột giới tính canh hiển thị thơng tin sau: giới tính khách hàng Nam hiển thị hình tượng trưng cho phái Nam, cịn ngược lại hiển thị hình tượng trưng cho phái Nữ hình Bài Mục đích: Ôn lại cách kết hợp PHP MySQL đọc liệu bảng CSDL Làm quen với cách hiển thị liệu có phân trang Ơn lại cách sử dụng class Yêu cầu: Thiết kế trang hiển thị thơng tin sữa có phân trang sau: Yêu cầu chức Stt Đối tượng Yêu cầu xử lý chức trang Yêu cầu: luoi_phan_trang Kết nối vào MySQL Chọn CSDL QL_BAN_SUA Đọc bảng sữa, loại sữa, hãng sữa Sử dụng class pager để thực việc phân trang, đó: Mỗi trang gồm có hai dịng liệu Xuất thơng tin dạng lưới có định dạng hình (dịng chẵn dịng lẻ có màu nền, màu chữ khác nhau, giá sữa định 117 dạng theo kiểu tiền tệ) Hiển thị danh sách trang theo dạng số Bài Mục đích: Ơn lại cách kết hợp PHP MySQL đọc liệu bảng CSDL Làm quen với cách hiển thị liệu dạng list đơn giản Yêu cầu: Tạo trang hiển thị thông tin sản phẩm sữa dạng list hình sau: Yêu cầu chức Stt Đối tượng Yêu cầu xử lý chức trang Yêu cầu: list_don_gian Kết nối vào MySQL Chọn CSDL QL_BAN_SUA Đọc bảng sữa hiết kế hiển thị thông tin sản phẩm sữa hình trên, đó: Mỗi sữa hiển thị dịng có hai cột: cột hình ảnh cột nội dung (có tên sữa, hãng sản xuất, loại sữa, trọng lượng, đơn giá) Bài Mục đích: Ôn lại cách kết hợp PHP MySQL đọc liệu bảng CSDL Làm quen với cách hiển thị liệu dạng list cột Yêu cầu: Tạo trang hiển thị thông tin sản phẩm sữa dạng list hình sau: 118 Yêu cầu chức Stt Đối tượng Yêu cầu xử lý chức trang Yêu cầu: list_dang_cot Kết nối vào MySQL Chọn CSDL QL_BAN_SUA Đọc bảng sua Thiết kế hiển thị thơng tin sản phẩm sữa hình trên, đó: Mỗi dịng có năm cột, cột có table hiển thị thông tin sữa (tên sữa, trọng lượng, đơn giá) hình ảnh Bài Mục đích: Ôn lại cách kết hợp PHP MySQL đọc liệu bảng CSDL Làm quen với cách hiển thị liệu dạng list cột, có link qua trang chi tiết hiển thị thông tin chi tiết tương ứng với link chọn Yêu cầu: Tạo hai trang, đó: Trang đầu hiển thị thơng tin sản phẩm sữa dạng list có link hình sau: Trang sau hiển thị chi tiết sản phẩm sữa chọn trang trƣớc: 119 Yêu cầu chức Stt Đối tượng trang list_dang_cot_ co_link trang list_chi_tiet Yêu cầu xử lý chức Yêu cầu: Kết nối vào MySQL Chọn CSDL QL_BAN_SUA Đọc bảng sua Thiết kế hiển thị thông tin sản phẩm sữa hình trên, đó: Mỗi dịng có năm cột, cột có table hiển thị thơng tin sữa hình ảnh tương ứng Ở tên sữa tạo link qua trang list_chi_tiet truyền vào mã sữa Yêu cầu: Hiển thị chi tiết sản phẩm sữa định dạng hình tương ứng với mã sữa lấy từ trang list_dang_cot_co_link truyền qua Bài Mục đích: Ơn lại cách kết hợp PHP MySQL đọc liệu bảng CSDL Làm quen với cách hiển thị liệu dạng list chi tiết có phân trang Yêu cầu: Tạo trang hiển thị thông tin chi tiết sản phẩm sữa dạng list có phân trang: Yêu cầu chức Stt Đối tượng Yêu cầu xử lý chức trang Yêu cầu: list_phan_trang Kết nối vào MySQL Chọn CSDL QL_BAN_SUA Đọc bảng sữa Thiết kế hiển thị thơng tin sản phẩm sữa có phân trang hình trên, đó: Gọi sử dụng class pager cho sẵn để phân trang (hai sản phẩm trang) 120 Bài TH 07 Sử dụng biến đối tƣợng PHP Phần Bài tập có hƣớng dẫn Bài Ví dụ biến Session: - Tạo biến session - Gọi lại biến sesion Bài Tạo gọi lại biến Cookie