Bài giảng Lập trình Web - Trần Phi Hảo

ppt 330 trang cucquyet12 6413
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình Web - Trần Phi Hảo", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pptbai_giang_lap_trinh_web_tran_phi_hao.ppt

Nội dung text: Bài giảng Lập trình Web - Trần Phi Hảo

  1. TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI KHOA: KHOA HỌC MÁY TÍNH LẬP TRÌNH WEB GIẢNG VIÊN: ThS. TRẦN PHI HẢO
  2. MỤC TIÊU CỦA HỌC PHẦN Trình bày tổng quan về Web Server và cách thức hoạt động của nó. Cung cấp các kiến thức cơ bản về ngôn ngữ PHP và CSDL MySQL như: cách cài đặt, câu lệnh, cú pháp, các hàm thông dụng trong việc lập trình Web động Vận dụng các kiến thức được học vào việc thiết kế và xây dựng các ứng dụng Web hoạt động trên mô hình Client/ Server 14/08/2021 Lập trình Web 2
  3. TÀI LIỆU THAM KHẢO ❑ Giáo trình nhập môn PHP & MySQL xây dựng ứng dụng Web, Nguyễn Thiên Bằng – Nhà Xuất bản Lao động xã hội  Sử dụng PHP & MySQL Thiết kế Web động, Nguyễn Trường Sinh – Nhà xuất bản thống kê  Xây dựng ứng dụng Web bằng PHP & MySQL, Phạm Hữu Khang  Beginning PHP and MySQL, W. Jason Gilmore – Third edition  Advanced PHP for Web Professionals, Christopher Cosentino – Prentice Hall PTR (2002) 14/08/2021 Lập trình Web 3
  4. NỘI DUNG 1. GIỚI THIỆU HTML FORM 2. GIỚI THIỆU VỀ MÔ HÌNH CLIENT/ SERVER VÀ WEB SERVER 3. TỔNG QUAN VỀ PHP 4. TỔNG QUAN VỀ MYSQL 5. SỬ DỤNG PHP & MYSQL ĐỂ XÂY DỰNG CÁC ỨNG DỤNG WEB 14/08/2021 Lập trình Web 4
  5. CHƯƠNG 1: GIỚI THIỆU HTML FORM VÀ WEB SERVER 1.1. FORM VÀ CÁC THUỘC TÍNH 1.2. CÁC KIỂU PHẦN TỬ TRÊN FORM 1.3. MÔ HÌNH CLIENT/ SERVER VÀ WEB SERVER 14/08/2021 Lập trình Web 5
  6. 1.1. FORM VÀ CÁC THUỘC TÍNH ❑ Form là nơi để người dùng nhập thông tin ❑ Mỗi Form được bao bởi cặp thẻ ❑ Các thuộc tính của form ❑ Action = “URL”: chỉ đến script xử lý form ❑ Method = “GET” hoặc “POST”: ngầm định là GET ❑ Name: thuộc tính tên ❑ Enctype = “Mine_type”: loại dữ liệu sẽ gửi đi 14/08/2021 Lập trình Web 6
  7. 1.2. CÁC KIỂU PHẦN TỬ TRÊN FORM ❑ Phần tử input ❑ Phần tử select ❑ Phần tử textarea ❑ Phần tử button 14/08/2021 Lập trình Web 7
  8. PHẦN TỬ INPUT ❑ Hầu hết công việc trên forms thường được hoàn tất với các phần tử nhập (input). ❑ Một thẻ input và thuộc tính của nó sẽ quyết định loại phần tử form nào được hiển thị trên trình duyệt ❑ Cú pháp: Ví dụ: Xét đoạn Script sau và xem kết quả hiển thị trên trình duyệt 14/08/2021 Lập trình Web 8
  9. PHẦN TỬ INPUT Form 1 Name: Password: Emai:       ;        14/08/2021 Lập trình Web 9
  10. PHẦN TỬ INPUT Hiển thị trên Browser 14/08/2021 Lập trình Web 10
  11. PHẦN TỬ INPUT ❑ Một số loại (type) phần tử input: ❑ Text ❑ Password ❑ Hidden ❑ Submit ❑ Reset ❑ Checkbox ❑ Radio ❑ File ❑ Image 14/08/2021 Lập trình Web 11
  12. PHẦN TỬ SELECT ❑ Phần tử select dùng để tạo một danh sách liệt kê. ❑ Được đặt trong cặp thẻ với một thuộc tính tên ❑ Trong phần tử này, các thẻ sẽ chỉ ra các giá trị chọn lựa. Mỗi giá trị có một thuộc tính giá trị ❑ Ta có thể chọn nhiều hơn một giá trị bằng cách thêm vào thẻ thuộc tính “multiple” ❑ Cú pháp: giá trị 14/08/2021 Lập trình Web 12
  13. PHẦN TỬ SELECT Ví dụ: Xét đoạn Script và xem kết quả trên trình duyệt Select your country: Others Australia Germany France Italia Ireland Vietnam 14/08/2021 Lập trình Web 13
  14. PHẦN TỬ SELECT Hiển thị trên Browser 14/08/2021 Lập trình Web 14
  15. PHẦN TỬ TEXTAREA ❑ Được sử dụng khi cần nhập vào một đoạn văn bản gồm nhiều dòng (khối văn bản) ❑ Được đặt trong cặp thẻ ❑ Các thuộc tính cols và rows dùng để thiết lập số cột và số dòng dùng để hiển thi đoạn văn bản ❑ Cú pháp Đoạn văn bản cần nhập 14/08/2021 Lập trình Web 15
  16. PHẦN TỬ TEXTAREA Ví dụ: Xét đoạn Script sau: Textarea Example Enter your infomation here: Please write something! 14/08/2021 Lập trình Web 16
  17. PHẦN TỬ SELECT Hiển thị trên Browser 14/08/2021 Lập trình Web 17
  18. PHẦN TỬ BUTTON ❑ Button là một phiên bản của nút Submit, nó cho phép cả văn bản và hình ảnh được đặt trên cùng một nút ❑ Được đặt trong cặp thẻ Ví dụ: Submit 14/08/2021 Lập trình Web 18
  19. PHẦN TỬ BUTTON Hiển thị trên Browser 14/08/2021 Lập trình Web 19
  20. 1.2. CÁC KIỂU PHẦN TỬ TRÊN FORM Lưu ý: ❑ Để nhóm các phần tử trên form lại ta có thể dùng cặp thẻ ❑ Để tạo tiêu đề cho nhóm các phần tử ta dùng cặp thẻ /legend> Bài tập: Tìm hiểu một số Website trên mạng sau đó sử dụng các kiểu phần tử trên form trong HTML để thiết kế một WebPage. 14/08/2021 Lập trình Web 20
  21. 1.2. CÁC KIỂU PHẦN TỬ TRÊN FORM 14/08/2021 Lập trình Web 21
  22. 1.3. MÔ HÌNH CLIENT/ SERVER VÀ WEBSERVER ❑ Mô hình Client/ Server là môi trường, kiến trúc căn bản nhất để trang Dynamic Web hoạt động được. ❑ Clients có thể xem như là các máy do người dùng sử dụng để truy cập vào Website. ❑ Server là nơi dùng để lưu trữ các Website và Database. Xử lý việc cùng một lúc nhiều Clients truy cập vào cùng một Website. ❑ Hầu hết các ứng dụng Web đều hoạt động tập trung trên Server. ❑ Một Cơ sở dữ liệu (CSDL) trên Server sẽ lưu trữ tất cả những thông tin đáp ứng yêu cầu cho công việc của ứng dụng Web. 14/08/2021 Lập trình Web 22
  23. 1.3. MÔ HÌNH CLIENT/ SERVER VÀ WEBSERVER ❑ Webserver là một ứng dụng dùng để đảm trách việc giao tiếp với các trình duyệt. Nhận các yêu cầu từ phía Clients, xử lý và trả lời các yêu cầu đó. ❑ Có nhiều loại Webserver khác nhau nhưng thông dụng nhất là: Apache và IIS (Internet Information Server). ❑ Để tạo sự liên kết giữa Webserver và CSDL lưu trữ trên Server cần phải có một ngôn ngữ lập trình. Chẳng hạn như: asp, php, jsp, thuộc lớp ngôn ngữ lập trình MiddleWare ❑ Ta có mô hình hoạt động như sau: 14/08/2021 Lập trình Web 23
  24. 1.3. MÔ HÌNH CLIENT/ SERVER VÀ WEBSERVER 14/08/2021 Lập trình Web 24
  25. CHƯƠNG 2: TỔNG QUAN VỀ NGÔN NGỮ PHP 2.1. GIỚI THIỆU VỀ PHP 2.2. CÚ PHÁP 2.3. CÁC KIỂU DỮ LIỆU 2.4. BIẾN VÀ HẰNG 2.5. PHÉP GÁN VÀ CÁC PHÉP TOÁN 2.6. TRUY CẬP ĐẾN FORM 2.7. CÁC CẤU TRÚC ĐIỀU KHIỂN 14/08/2021 Lập trình Web 25
  26. 2.1. GIỚI THIỆU VỀ PHP ❑ Php là gì? ❑ Đặc điểm của file php ❑ Lịch sử phát triển ❑ Download, cài đặt và cấu hình ứng dụng php ❑ Quá trình thông dịch trang php 14/08/2021 Lập trình Web 26
  27. Php là gì? ❑ PHP được viết tắt của chữ Personal Home Page ❑ Là ngôn ngữ kịch bản trình chủ (Server Script) chạy trên phía máy chủ (Server side) giống như các server script khác: asp, jsp, cold fusion, ❑ Là kịch bản cho phép chúng ta xây dựng ứng dụng web trên mạng internet hay intranet tương tác với mọi cơ sở dữ liệu như: Informix, MySQL, PostgreSQL, Oracle, Sybase, SQL Server, ❑ Là phần mềm mở, dùng cho mục đích tổng quát. Thích hợp với Web và có thể dễ dàng nhúng vào trang HTML 14/08/2021 Lập trình Web 27
  28. Đặc điểm của file php ❑ Các file PHP trả về kết quả cho trình duyệt là một trang thuần HTML ❑ Các file PHP có thể chứa văn bản (Text), các thẻ HTML (HTML tags) và các đoạn mã kịch bản (Script) ❑ Các file PHP có phần mở rộng là: .php, .php3, . Phpml ❑ Lưu ý rằng, từ phiên bản 4.0 trở về sau mới hỗ trợ session 14/08/2021 Lập trình Web 28
  29. Lịch sử phát triển ❑ Năm 1995, phiên bản đầu tiên ra đời có tên là PHP/FI được viết bởi nhà phát triển phần mềm Rasmus Lerdorf. ❑ PHP/FI, viết tắt từ "Personal Home Page/Forms Interpreter", bao gồm một số các chức năng cơ bản của PHP ngày nay. ❑ Năm 1997, phiên bản PHP/FI 2.0 ra đời nhưng chỉ được công bố dưới dạng các bản beta. Đến tháng 11 năm 1997 mới chính thức được công bố ❑ Năm 1998, phiên bản PHP 3.0 được chính thức công bố 14/08/2021 Lập trình Web 29
  30. Lịch sử phát triển ❑ Andi Gutmans và Zeev Suraski tiếp tục hoàn tất phần lõi nhằm cải tiến PHP 3.0. ❑ Tháng 05/2000, phiên bản PHP 4.0 với hàng loạt các tính năng mới bổ sung, đã chính thức được công bố ❑ 29/06/2003, phiên bản PHP 5 Beta 1 đã chính thức được công bố ❑ Tháng 10/2003, phiên bản Beta 2 ra mắt với sự xuất hiện của hai tính năng rất được chờ đợi: Iterators, Reflection nhưng namespace một tính năng gây tranh cãi khác đã bị loại khỏi mã nguồn 14/08/2021 Lập trình Web 30
  31. Lịch sử phát triển ❑ Ngày 21/12/2003: phiên bản PHP 5 Beta 3 đã được công bố ❑ Ngày 13/07/2004, phiên bản PHP 5 bản chính thức đã ra mắt sau một chuỗi khá dài các bản kiểm tra thử bao gồm Beta 4, RC 1, RC2, RC3 ❑ Ngày 14/07/2005, phiên bản PHP 5.1 Beta 3 được PHP Team công bố đánh dấu sự chín muồi mới của PHP với sự có mặt của PDO ❑ Hiện nay, phiên bản tiếp theo của PHP đang được phát triển, PHP 6 bản sử dụng thử đã có thể được download tại địa chỉ 14/08/2021 Lập trình Web 31
  32. Download, cài đặt và cấu hình ứng dụng php ❑ Nếu máy chủ chưa được hỗ trợ PHP thì cần phải cài đặt nó. ❑ Download miễn phí tại: ❑ Để truy cập được vào Web server có hỗ trợ PHP, cần: ❑ Cài đặt Apache hoặc IIS trên máy chủ, cài PHP, MySQL ❑ Hoặc thuê một Web hosting có hỗ trợ PHP và MySQL ❑ Có thể sử dụng một số phần mềm tích hợp sẵn Apache, php, MySQL. Chẳng hạn, như XAMPP download tại: www.apachefriends.org 14/08/2021 Lập trình Web 32
  33. Quá trình thông dịch trang php ❑ Php là kịch bản trình chủ được chạy trên nền php Engine, cùng với ứng dụng Web Server để quản lý chúng. ❑ Khi trang php được gọi, Web Server triệu gọi php Engine để thông dịch, dịch trang php và trả về kết quả cho người sử dụng là một trang thuần HTML ❑ Ta có mô hình như sau: 14/08/2021 Lập trình Web 33
  34. Quá trình thông dịch trang php 14/08/2021 Lập trình Web 34
  35. 2.2. CÚ PHÁP ❑ Ta có thể nhúng các lệnh của php vào trang HTML ❑ Đoạn mã php luôn được bắt đầu và kết thúc bởi cặp thẻ theo cú pháp: ❑ Đoạn mã php có thể đặt bất kỳ đâu trong tài liệu ❑ Thông thường một trang php bao gồm các thẻ HTML như một trang HTML nhưng có thêm các đoạn mã php 14/08/2021 Lập trình Web 35
  36. 2.2. CÚ PHÁP Ví dụ: Ta có đoạn mã php hiển thị câu “Learning php programing” lên trình duyệt như sau: 14/08/2021 Lập trình Web 36
  37. 2.2. CÚ PHÁP 14/08/2021 Lập trình Web 37
  38. 2.2. CÚ PHÁP ❑ Mỗi câu lệnh trong php được kết thúc bằng dấu (;). Dấu này là một toán tử dùng để phân biệt các cấu trúc với nhau ❑ Có hai câu lệnh cơ bản dùng để hiển thị các câu text ra browser là : echo và print 14/08/2021 Lập trình Web 38
  39. 2.2. CÚ PHÁP Lưu ý: ❑ Các file php phải có phần mở rộng là .php. Nếu phần mở rộng là .html thì đoạn mã php sẽ không được thực thi ❑ Có thể viết các câu chú thích cho đoạn mã php. Có hai cách viết là: /* chú thích */ hoặc // chú thích ❑ Đoạn mã php cũng có thể đặt trong cặp thẻ: 14/08/2021 Lập trình Web 39
  40. 2.2. CÚ PHÁP Ví dụ: Ta có trang vidu2.php như sau: Example Welcome to! Php programing ";?> Mysql database "; ?> And web server design 14/08/2021 Lập trình Web 40
  41. 2.2. CÚ PHÁP 14/08/2021 Lập trình Web 41
  42. 2.3. CÁC KIỂU DỮ LIỆU ❑ Php hỗ trợ 5 kiểu dữ liệu như sau: ❑ Integer: sử dụng cho giá trị có kiểu dữ liệu là số nguyên ❑ Double: sử dụng cho giá trị có kiểu dữ liệu là số thực ❑ String: sử dụng cho các giá trị có kiểu dữ liệu là chuỗi và ký tự ❑ Array: sử dụng cho các giá trị có kiểu dữ liệu là mảng ❑ Object: sử dụng cho các giá trị có kiểu dữ liệu là đối tượng của lớp 14/08/2021 Lập trình Web 42
  43. 2.4. BIẾN VÀ HẰNG TRONG PHP ❑ Biến ❑ Hằng 14/08/2021 Lập trình Web 43
  44. Biến ❑ Biến dùng để lưu giá trị như: xâu, số, ký tự, mảng, ❑ Tất cả các biến trong php đều bắt đầu bằng ký hiệu $ ❑ Biến được khai báo tự động khi sử dụng (gán giá trị) cho nó theo cú pháp: $Tên_biến = Giá_trị; ❑ Php là ngôn ngữ không định kiểu, nghĩa là không cần khai báo kiểu cho biến. Php sẽ chuyển kiểu của biến một cách tự động tùy thuộc vào giá trị của nó ❑ Lưu ý: Quy tắc đặt tên biến trong php giống như trong C, C++, 14/08/2021 Lập trình Web 44
  45. Biến Ví dụ: Ta có trang vidu3.php như sau: Example 3 "; $a = 5; $b = 10; $c = $a*$b; echo "Tich a*b = $c"; ?> 14/08/2021 Lập trình Web 45
  46. Biến 14/08/2021 Lập trình Web 46
  47. Biến ❑ Phạm vi của biến: ❑ Nếu biến được khai báo trong Script thì có phạm vi trong toàn Script ❑ Nếu biến được khai báo trong một hàm nào đó thì chỉ có tác dụng trong hàm đó ❑ Kiểm tra/ loại bỏ biến: ❑ Sử dụng hàm isset(Tên_biến) để kiểm tra biến đó có tồn tại hay không? Kết quả trae về kiểu boolean ❑ Sử dụng hàm unset(Tên_biến) để loại bỏ biến đang tồn tại ra khỏi trạng thái thực thi ❑ Sử dụng hàm empty(Tên_biến) để kiểm tra biến tồn tại và không rỗng 14/08/2021 Lập trình Web 47
  48. Biến Ví dụ: Xét đoạn mã sau đây: "; echo isset($a)." "; unset($a); echo isset($a)." "; ?> 14/08/2021 Lập trình Web 48
  49. Biến ❑ Ngoài ra, để kiểm tra kiểu dữ liệu của biến ta có thể sử dụng các hàm sau: ❑ is_array() ❑ is_double() ❑ is_float() ❑ is_long() ❑ is_int() ❑ is_string() ❑ is_object() 14/08/2021 Lập trình Web 49
  50. Hằng ❑ Hằng trong php được khai báo giống như các ngôn ngữ C, C++ ❑ Tên hằng thường được viết bằng chữ hoa ❑ Cú pháp khai báo hằng như sau: define (“Tên_hằng”, giá_trị); hoặc define (Tên_hằng, giá trị); Ví dụ: Ta có khái báo hằng MAX = 100 như sau: define (“MAX”, 100); define (MAX, 100); 14/08/2021 Lập trình Web 50
  51. 2.5 CÁC PHÉP TOÁN ❑ Phép gán ❑ Các phép toán số học ❑ Các phép toán quan hệ ❑ Các phép toán logic ❑ Phép toán trên chuỗi ❑ Các phép toán tự tăng giảm ❑ Biểu thức điều kiện 14/08/2021 Lập trình Web 51
  52. Phép gán ❑ Phép gán là phép toán cơ bản của mọi ngôn ngữ lập trình. ❑ Phép gán đơn: cú pháp: $Tên_biến = Giá_trị; ❑ Phép gán mở rộng: $Tên_biến pt= Giá_trị; ❑ Trong đó: pt có thể là: +, -, *, /, % 14/08/2021 Lập trình Web 52
  53. Các phép toán số học ❑ Phép toán số học một ngôi: - (đảo dấu) ❑ Phép toán số học hai ngôi: Toán tử Tên Ví dụ + Cộng $a + $b - Trừ $a - $b * Nhân $a * $b / Chia nguyên $a / $b % Chia lấy dư $a % $b 14/08/2021 Lập trình Web 53
  54. Các phép toán quan hệ ❑ Các phép toán quan hệ trả về kết quả là true hoặc false Toán tử Tên Ví dụ Lớn hơn $a > $b >= Lớn hơn hoặc bằng $a>= $b == Bằng 123 = “123” === Bằng và cùng kiểu dữ liệu 123 = “123” != Khác 123 != “123” !== Khác kiểu dữ liệu 123!==“123” “123” 14/08/2021 Lập trình Web 54
  55. Các phép toán logic ❑ Giống như các phép toán quan hệ các phép toán logic trả về kết quả là true hoặc false Toán tử Tên Ví dụ && And (và) $a && $b || Or (hoặc) $a or $b ! Not (phủ định) !$b 14/08/2021 Lập trình Web 55
  56. Các phép toán tự tăng giảm ❑ Để tăng (hoặc giảm) giá trị của một biến lên (xuống) một đơn vị có thể sử dụng phép toán tự tăng ++ và tự giảm – ❑ Có hai cách viết phép toán tự tăng giảm: ❑ ++&Tên_biến (hoặc $Tên_biến) ❑ &Tên_biến++ (hoặc $Tên_biến ) ❑ Lưu ý: cần phân biệt hai cách viết trên. 14/08/2021 Lập trình Web 56
  57. Phép toán về chuỗi ❑ Phép cộng chuỗi: Để cộng (ghép) hai chuỗi lại với nhau ta sử dụng dấu chấm (.) Ví dụ: xét đoạn mã sau: Example 4 Let's see how two strings are concatenated 14/08/2021 Lập trình Web 57
  58. Phép toán về chuỗi 14/08/2021 Lập trình Web 58
  59. Biểu thức điều kiện ❑ Cú pháp: Biến = Giá trị 1> Giá trị 2? Giá trị 1: Giá trị 2; Ví dụ: $b? $a: $b; ?> 14/08/2021 Lập trình Web 59
  60. 2.6. TRUY CẬP ĐẾN FORM ❑ Form cùng với các thuộc tính của nó là nơi để người sử dụng nhập dữ liệu vào ❑ Để làm việc với các dữ liệu đó đòi hỏi phải kết nối đến form ❑ Khi làm việc với form thì các phần tử form trên trang html sẽ tự động trở thành biến trong đoạn mã php ❑ Để lấy giá trị từ các phần tử form ta sử dụng các hàm $_GET hoặc $_POST 14/08/2021 Lập trình Web 60
  61. Hàm $_GET ❑ Là hàm xây dựng sẵn dùng để lấy các giá trị từ form có sử dụng method = GET ❑ Thông tin khi truyền đi với phương thức GET sẽ được hiển thị trên Browser’s address bar ❑ Mọi người có thể nhìn thấy thông tin và số ký tự tối đa là 100 ❑ Cú pháp lấy giá trị từ các phần tử form $_GET[“Tên phần tử form”] 14/08/2021 Lập trình Web 61
  62. Hàm $_GET Ví dụ: Ta có trang login.html như sau: Login user: User name: Password: 14/08/2021 Lập trình Web 62
  63. Hàm $_GET Trang display.php như sau: Data on form will be display on browser through php "; echo "Password: ".$_GET["password"]; ?> 14/08/2021 Lập trình Web 63
  64. Hàm $_GET 14/08/2021 Lập trình Web 64
  65. Hàm $_GET 14/08/2021 Lập trình Web 65
  66. Hàm $_POST ❑ Là hàm xây dựng sẵn dùng để lấy các giá trị từ form có sử dụng method = POST ❑ Thông tin khi truyền đi với phương thức POST sẽ không được hiển thị trên Browser’s address bar ❑ Không thể nhìn thấy các thông tin (biến và giá trị) đang truyền. ❑ Cú pháp lấy giá trị từ các phần tử form $_POST[“Tên phần tử form”] Ví dụ: Thiết kế form và trang php để giải quyết bài toán tìm nghiệm của phương trình bậc nhất, bậc hai 14/08/2021 Lập trình Web 66
  67. 2.7 CÁC CẤU TRÚC ĐIỀU KHIỂN ❑ Cấu trúc rẽ nhánh ❑ Cấu trúc lặp 14/08/2021 Lập trình Web 67
  68. Cấu trúc rẽ nhánh ❑ Cấu trúc if: Cú pháp: if (điều kiện) câu lệnh php; Ví dụ: $b) echo "Gia trị lớn nhất là: ".$a; ?> 14/08/2021 Lập trình Web 68
  69. Cấu trúc rẽ nhánh Cấu trúc if else: Cú pháp: if (điều kiện) công việc 1; Else công việc 2; Ví dụ: $b) echo "Gia trị lớn nhất là: ".$a; else echo "Gia trị lớn nhất là: ".$b;?> 14/08/2021 Lập trình Web 69
  70. Cấu trúc rẽ nhánh Lưu ý: ▪ Ta có thể sử dụng cấu trúc if lồng nhau khi có nhiều hơn 2 sự lựa chọn ▪ Nếu cần thực thi nhiều câu lệnh thì cần đặt nó trong cặp dấu ngoặc móc { } 14/08/2021 Lập trình Web 70
  71. Cấu trúc rẽ nhánh ❑ Cấu trúc switch: sử dụng khi có nhiều sự lựa chọn Cú pháp: switch (n) {case label 1: code to be executed if n=label 1; break; case label 2: code to be executed if n=label 2; break; case label n: code to be executed if n=label n; break; default: code to be executed if n is different from label 1 to label n; } 14/08/2021 Lập trình Web 71
  72. Cấu trúc rẽ nhánh Ví dụ: "; break; case "insert":echo"chèn dữ liệu "; break; case "delete":echo"xoa dữ liệu "; break; case "save":echo"xóa dữ liệu "; break; } ?> 14/08/2021 Lập trình Web 72
  73. Cấu trúc rẽ nhánh Ví dụ: "; break; case "insert":echo"chèn dữ liệu "; break; case "delete":echo"xoa dữ liệu "; break; case "save":echo"xóa dữ liệu "; break; } ?> 14/08/2021 Lập trình Web 73
  74. Cấu trúc rẽ nhánh Ví dụ: 14/08/2021 Lập trình Web 74
  75. Cấu trúc lặp ❑ Cấu trúc While: Cú pháp: while (condition) { code to be executed; } ❑ Cấu trúc do while: Cú pháp: do { code to be executed; } while (condition); 14/08/2021 Lập trình Web 75
  76. Cấu trúc rẽ nhánh Ví dụ: "; $a++; } ?> 14/08/2021 Lập trình Web 76
  77. Cấu trúc lặp ❑ Cấu trúc for: Cú pháp: for (init; condition; increment) { code to be executed; } ❑ Cấu trúc foreach: sử dụng khi lặp trên mảng Cú pháp: foreach ($array as $value) { code to be executed; } 14/08/2021 Lập trình Web 77
  78. Cấu trúc rẽ nhánh Ví dụ: "HoChiMinh", "HN" => "HaNoi", "HP" => "HaiPhong", "DN" => "DaNang"); foreach($tpho1 as $tp) { echo $tp." "; } foreach($tpho2 as $chiso=>$giatri) echo $chiso.":".$giatri." "; ?> 14/08/2021 Lập trình Web 78
  79. CHƯƠNG 3: MẢNG VÀ CHUỖI KÝ TỰ 3.1 GIỚI THIỆU VỀ MẢNG 3.2 MẢNG MỘT CHIỀU 3.3 MẢNG HAI CHIỀU 3.4 CÁC HÀM XỬ LÝ TRÊN MẢNG 3.5 CHUỖI KÝ TỰ 3.6 CÁC HÀM XỬ LÝ TRÊN CHUỖI 14/08/2021 Lập trình Web 79
  80. 3.1. GIỚI THIỆU VỀ MẢNG Khái niệm mảng Phân loại mảng 14/08/2021 Lập trình Web 80
  81. Phân loại mảng Căn cứ vào chỉ số mảng: Mảng có chỉ số kiểu number Mảng có chỉ số kiểu associative Ví dụ: Ta có các mảng $tpho = array(“HoChiMinh”, “HaNoi”, “HaiPhong”, “DaNang”); $tpho = array(“HCM” => “HoChiMinh”, “HN” => “HaNoi”, “HP” => “HaiPhong”, “DN” => “DaNang”); Căn cứ vào số chiều của mảng Mảng một chiều Mảng hai chiều (nhiều chiều) Ví dụ: Ta có các mảng $lop= array(array(“LT01A”, 34), array(“LT01B”, 35)); 14/08/2021 Lập trình Web 81
  82. 3.2 MẢNG MỘT CHIỀU Khai báo mảng Làm việc với phần tử mảng Sắp xếp mảng 14/08/2021 Lập trình Web 82
  83. Khai báo mảng Cú pháp: Khai báo mảng có chỉ số kiểu number $biến_mảng=array(danh sách các giá trị cần gán); Hoặc:$biến_mảng[0]=giá trị;// $biến_mảng[]=giá trị; $biến_mảng[1]=giá trị;//$biến_mảng[]=giá trị . Ví dụ: Ta có các khai báo $color=array(“gray”, “green”, “red”, “blue”, “yellow”); $color[0]=“gray”; $color[1]=“green”; Hoặc $color[]=“gray”; $color[]=“green”; 14/08/2021 Lập trình Web 83
  84. Khai báo mảng Khai báo mảng có chỉ số kiểu associative $biến_mảng=array(“chỉ số 1”=>“giá trị 1”, “chỉ số 2” => “giá trị 2”, ); Hoặc:$biến_mảng[“chỉ số 1”]=giá trị 1; $biến_mảng[“chỉ số 2”]=giá trị 2; . Ví dụ: Ta có các khai báo $tpho = array(“HCM” => “HoChiMinh”, “HN” => “HaNoi”, “HP” => “HaiPhong”, “DN” => “DaNang”); $tpho[“HCM”]=“HoChiMinh”; $tpho[“HN”]=“HaNoi”; 14/08/2021 Lập trình Web 84
  85. Khai báo mảng Khi các giá trị gán cho mảng là các giá trị nguyên hoặc ký tự có tính chất sắp xếp (tăng hoặc giảm) dần. Ta sử dụng hàm range() để khai báo mảng Cú pháp: $biến_mảng=range(giá trị đầu, giá trị cuối); Ví dụ: Ta có mảng: $number = range(0, 20); $charac = range(“A”, “Z”); 14/08/2021 Lập trình Web 85
  86. Làm việc với mảng Có thể thao tác với giá trị của các phần tử mảng thông qua tên biến_mảng kèm với chỉ số của nó Cú pháp: $biến_mảng[“chỉ số”] Ví dụ: Ta có đoạn code sau: “Ho Chi Minh”, “HN”=>“Ha Noi”, “HP”=>“Hai Phong”, “DN”=>“Da Nang”); echo $color[1]. “ ”. $color[2]. “ ”; Echo $tpho[“HCM”]. “ ”. $tpho[“HP”]; ?> 14/08/2021 Lập trình Web 86
  87. Làm việc với mảng 14/08/2021 Lập trình Web 87
  88. Làm việc với mảng Sử dụng vòng lặp để duyệt các phần tử mảng Ví dụ: Xét đoạn code sau ” ?> 14/08/2021 Lập trình Web 88
  89. Làm việc với mảng 14/08/2021 Lập trình Web 89
  90. Làm việc với mảng Sử dụng hàm count() để trả về số phần tử của mảng Cú pháp: count($biến_mảng), sizeof($biến_mảng); Ví dụ: Xét đoạn code sau ” ?> 14/08/2021 Lập trình Web 90
  91. Làm việc với mảng 14/08/2021 Lập trình Web 91
  92. Làm việc với mảng Sử dụng hàm list() để hiển thị cả chỉ số mảng và giá trị các phần tử mảng Cú pháp: list($key, $value)=each($biến_mảng); Trong đó: - Hàm each() sẽ lấy cặp chỉ số (khóa) và giá trị của phần tử mảng - Hàm list lấy các giá trị này gán cho $key và $value. Quá trình này tiếp tục cho đến khi mảng được duyệt hết - Nếu muốn duyệt lại mảng cần thiết lập lại con trỏ mảng bằng hàm reset($biến_mảng) 14/08/2021 Lập trình Web 92
  93. Làm việc với mảng Ví dụ: Xét đoạn code sau “Ho Chi Minh”, “HN”=>“Ha Noi”, “HP”=>“Hai Phong”, “DN”=>“Da Nang”); while(list($key,$value)=each($tpho)) echo “ $key la Thanh pho: $value ”; reset($tpho); while($row=each($tpho) echo “ ”.$row[“$key”].“ la thanh pho ”.$row[“$value”].“ ”; ?> 14/08/2021 Lập trình Web 93
  94. Làm việc với mảng 14/08/2021 Lập trình Web 94
  95. Sắp xếp mảng Đối với mảng một chiều, sau khi khai báo và gán giá trị cho các phần tử mảng, để sắp xếp mảng ta có một số hàm sau: Hàm sort() Hàm rsort() Hàm asort() Hàm arsort() Hàm ksort() Hàm krsort() 14/08/2021 Lập trình Web 95
  96. Hàm sort() Sắp xếp mảng theo chiều tăng dần của giá trị các phần tử mảng nhưng chỉ số tương ứng bị thay đổi Cú pháp: sort($biến_mảng) Ví dụ: sử dụng hàm sort() "Ho chi minh", "HN"=>"Ha noi", "DN"=>"Da nang", "HP"=>"Hai phong"); sort($tp); while ($row=each($tp)) { echo $row["key"]."\t"; echo $row["value"]." "; } ?> 14/08/2021 Lập trình Web 96
  97. Hàm sort() 14/08/2021 Lập trình Web 97
  98. Hàm rsort() Sắp xếp mảng theo chiều giảm dần của giá trị các phần tử mảng nhưng chỉ số tương ứng bị thay đổi Cú pháp: rsort($biến_mảng) Ví dụ: sử dụng hàm rsort "Ho chi minh", "HN"=>"Ha noi", "DN"=>"Da nang", "HP"=>"Hai phong"); rsort($tp); while ($row=each($tp)) { echo $row["key"]."\t"; echo $row["value"]." "; } ?> 14/08/2021 Lập trình Web 98
  99. Hàm rsort() 14/08/2021 Lập trình Web 99
  100. Hàm asort() Sắp xếp mảng theo chiều tăng dần của giá trị các phần tử mảng nhưng chỉ số vẫn giữa nguyên Cú pháp: asort($biến_mảng) Ví dụ: sử dụng hàm asort "Ho chi minh", "HN"=>"Ha noi", "DN"=>"Da nang", "HP"=>"Hai phong"); asort($tp); while ($row=each($tp)) { echo $row["key"]."\t"; echo $row["value"]." "; } ?> 14/08/2021 Lập trình Web 100
  101. Hàm asort() 14/08/2021 Lập trình Web 101
  102. Hàm arsort() Sắp xếp mảng theo chiều giảm dần của giá trị các phần tử mảng nhưng chỉ số vẫn giữa nguyên Cú pháp: arsort($biến_mảng) Ví dụ: sử dụng hàm arsort "Ho chi minh", "HN"=>"Ha noi", "DN"=>"Da nang", "HP"=>"Hai phong"); arsort($tp); while ($row=each($tp)) { echo $row["key"]."\t"; echo $row["value"]." "; } ?> 14/08/2021 Lập trình Web 102
  103. Hàm arsort() 14/08/2021 Lập trình Web 103
  104. Hàm ksort() Sắp xếp mảng theo chiều tăng dần của chỉ số mảng Cú pháp: ksort($biến_mảng) Ví dụ: sử dụng hàm ksort "Ho chi minh", "HN"=>"Ha noi", "DN"=>"Da nang", "HP"=>"Hai phong"); ksort($tp); while ($row=each($tp)) { echo $row["key"]."\t"; echo $row["value"]." "; } ?> 14/08/2021 Lập trình Web 104
  105. Hàm ksort() 14/08/2021 Lập trình Web 105
  106. Hàm krsort() Sắp xếp mảng theo chiều giảm dần của chỉ số mảng Cú pháp: krsort($biến_mảng) Ví dụ: sử dụng hàm krsort "Ho chi minh", "HN"=>"Ha noi", "DN"=>"Da nang", "HP"=>"Hai phong"); krsort($tp); while ($row=each($tp)) { echo $row["key"]."\t"; echo $row["value"]." "; } ?> 14/08/2021 Lập trình Web 106
  107. Hàm krsort() 14/08/2021 Lập trình Web 107
  108. 3.3 MẢNG HAI CHIỀU Khai báo mảng Làm việc với phần tử mảng Sắp xếp mảng 14/08/2021 Lập trình Web 108
  109. Khai báo mảng Cú pháp: Khai báo mảng có chỉ số kiểu number $biến_mảng=array(array(các giá trị mảng 1), array(các giá trị mảng 2), .); Hoặc:$biến_mảng[0][0]=giá trị; $biến_mảng[0][1]=giá trị; . Ví dụ: Ta có các khai báo $Lop=array(array(“LT01A”, “LT01B”, “MM01”, “DL01”), array(“LT02A”, “LT02B”, “MM02A”, “MM02B”, “HT02”)); $Lop[0][0]=“LT01A”; $Lop[0][1]=“LT01B”; 14/08/2021 Lập trình Web 109
  110. Khai báo mảng Cú pháp: Khai báo mảng có chỉ số kiểu associative $biến_mảng=array(“chỉ số h1”=>array(“chỉ số c1”=>giá trị, “chỉ số c2”=>giá trị 2, ), “chỉ số h2”=>array(“chỉ số c1”=>giá trị, “chỉ số c2”=>giá trị, ), ); Hoặc:$biến_mảng[“chỉ số h1”][“chỉ số c1”]=giá trị 1; $biến_mảng[“chỉ số h1”][“chỉ số c2”]=giá trị 2; . Ví dụ: Ta có các khai báo $tpho=array(“HCM”=>array(“Ten”=>“HoChiMinh”,“dan so”=>10000000), “HN”=>array(“Ten”=>“HaNoi”,“dan so”=>6000000), “HP”=>array(“Ten”=>“Hai Phong”),“DN”=>array(“Ten”=>“Da Nang”)); $tpho[“HCM”][“Ten”]=“HoChiMinh”; $tpho[“HN”][“dan so”]=6000000; 14/08/2021 Lập trình Web 110
  111. Làm việc với mảng Có thể thao tác với các phần tử mảng hai chiều thông qua tên biến_mảng và hai chỉ số hàng, cột Cú pháp: $biến_mảng[“chỉ số hàng”][“chỉ số cột”]; Ví dụ: Ta có đoạn code sau: array("Ten"=>"Ho chi minh", "dan so"=>10000000), "HN"=>array("Ten"=>"Ha noi","dan so"=>6000000), "DN"=>array("Ten"=>"Da nang"), "HP"=>array("Ten"=>"Hai phong")); echo “ ”.$tpho[“HCM”][“Ten”].“ co so dan: ”.$tpho[“HCM”][“dan so”].“ nguoi ”; ?> 14/08/2021 Lập trình Web 111
  112. Làm việc với mảng 14/08/2021 Lập trình Web 112
  113. Làm việc với mảng Sử dụng hàm list() để duyệt tất cả các phần tử của mảng Ví dụ: sử dụng list() cho ví dụ trên $hang: ”; while (list($cot, $value)=each($tpho1) echo “$cot: $value ”; echo “ ” } ?> 14/08/2021 Lập trình Web 113
  114. Làm việc với mảng 14/08/2021 Lập trình Web 114
  115. Sắp xếp mảng Để sắp xếp mảng hai chiều, có thể sử dụng các hàm như: Hàm usort() Hàm uasort() Hàm uksort() Tuy nhiên, để kết hợp với hàm trên ta cần khai báo hàm so sánh phần tử như sau: function my_sort($a, $b) {if ($a == $b) return 0; return ($a > $b)? -1: 1; } 14/08/2021 Lập trình Web 115
  116. Hàm usort() Sắp xếp mảng theo thứ tự tăng dần của một cột nào đó nhưng chỉ số của các phần tử mảng thay đổi Cú pháp: usort($biến_mảng, my_sort) 14/08/2021 Lập trình Web 116
  117. Hàm usort() Ví dụ: xét đoạn code sau $b[1]) return 1; else return -1;} $st=array(array("Vietnam", "Hanoi", 100),array("France", "Paris", 3000), array("Spain", "Madrid", 2000)); usort($st, SX); for($i=0; $i ".$st[$i][$j]." | "; echo " "; } ?> 14/08/2021 Lập trình Web 117
  118. Hàm usort() 14/08/2021 Lập trình Web 118
  119. Hàm uasort() Sắp xếp mảng theo thứ tự tăng dần của một cột nào đó nhưng chỉ số của phần tử mảng không thay đổi theo Cú pháp: uasort($biến_mảng, my_sort) 14/08/2021 Lập trình Web 119
  120. Hàm uksort() Sắp xếp các phần tử mảng theo chỉ số của chúng. Sử dụng đối với các mảng có chỉ số kiểu associative Cú pháp: uksort($biến_mảng, my_sort) - Để sắp xếp mảng theo một cột nào đó ta có thể thay đổi nội dung của hàm my_sort() 14/08/2021 Lập trình Web 120
  121. 3.4 CÁC HÀM XỬ LÝ TRÊN MẢNG Hàm kiểm tra sự tồn tại của mảng Hàm di chuyển trên các phần tử Hàm trả về kích thước mảng Hàm tìm kiếm trên mảng Hàm thêm hoặc xóa phần tử mảng 14/08/2021 Lập trình Web 121
  122. Hàm kiểm tra sự tồn tại của mảng Dùng hàm is_array() để kiểm tra một biến mảng nào đó có tồn tại hay không. Cú pháp: is_array($biến_mảng); Ví dụ: 14/08/2021 Lập trình Web 122
  123. Hàm di chuyển trên các phần tử Các hàm thường dùng để di chuyển con trỏ trên các phần tử mảng Hàm current() Hàm next() Hàm each() Hàm prev() Hàm reset() Hàm end() 14/08/2021 Lập trình Web 123
  124. Hàm current() Tác dụng: trả về giá trị của phần tử hiện tại trong mảng. Cú pháp: current($biến_mảng) Ví dụ: xét câu lệnh sau: "; ?> 14/08/2021 Lập trình Web 124
  125. Hàm next() Tác dụng: trả về giá trị của phần tử kế tiếp; trả về false nếu hết mảng hoặc phần tử rỗng Cú pháp: next($biến_mảng) Ví dụ: xét câu lệnh sau: "; echo next($people); ?> 14/08/2021 Lập trình Web 125
  126. Hàm each() Tác dụng: trả về chỉ số và giá trị của phần tử hiện tại và chuyển con trỏ sang phần tử tiếp theo Cú pháp: each($biến_mảng) Ví dụ: xét câu lệnh sau: $val" ; ?> 14/08/2021 Lập trình Web 126
  127. Hàm prev() Tác dụng: trả về giá trị của phần tử ngay trước phần tử hiện tại; trả về false nếu đầu mảng hoặc phần tử rỗng Cú pháp: prev($biến_mảng) Ví dụ: xét câu lệnh sau: "; echo next($people).“ ” ; echo prev($people);?> 14/08/2021 Lập trình Web 127
  128. Hàm reset() Tác dụng: chuyển con trỏ mảng về đầu mảng và trả về giá trị của phần tử đầu tiên của mảng Cú pháp: reset($biến_mảng) Ví dụ: xét câu lệnh sau: "; echo next($people).“ ” ; echo reset($people); ?> 14/08/2021 Lập trình Web 128
  129. Hàm end() Tác dụng: chuyển con trỏ mảng về cuối mảng và trả về giá trị của phần tử cuối cùng của mảng Cú pháp: end($biến_mảng) Ví dụ: xét câu lệnh sau: "; echo next($people).“ ” ; echo end($people); ?> 14/08/2021 Lập trình Web 129
  130. Hàm trả về kích thước mảng Có thể sử dụng hàm count() hoặc hàm sizeof() để đếm tổng số phần tử có trong mảng Cú pháp: count($biến_mảng) hoặc sizeof($biến_mảng) 14/08/2021 Lập trình Web 130
  131. Hàm tìm kiếm trên mảng Hàm in_array() Hàm array_key_exists() Hàm array_search() 14/08/2021 Lập trình Web 131
  132. Hàm in_array() Tác dụng: Tìm xem một giá trị nào đó có trong mảng hay không? Nếu có trả về true, ngược lại trả về false Cú pháp: in_array(“giá trị cần tìm”, $biến_mảng, type) Trong đó: type là tham số nhận 2 giá trị true hoặc false. Nếu thiết lập là true thì tìm kiếm có phân biệt hoa, thường; xâu, số. Và mặc định là false 14/08/2021 Lập trình Web 132
  133. Hàm in_array() Ví dụ: xét đoạn mã: 14/08/2021 Lập trình Web 133
  134. Hàm array_key_exists() Tác dụng: Kiểm tra xem một khóa nào đó có trong mảng hay không? Trả về true nếu tìm thấy, ngược lại trả về false Cú pháp: array_key_exists(“giá trị khóa”, $biến_mảng) Ví dụ: Xét đoạn mã sau: "Dog","b"=>"Cat"); if (array_key_exists("a",$a)) echo "Key exists!"; else echo "Key does not exist!"; ?> 14/08/2021 Lập trình Web 134
  135. Hàm array_search() Tác dụng: Kiểm tra xem một giá trị nào đó có trong mảng hay không? Trả về khóa tương ứng nếu tìm thấy Cú pháp: array_search(“giá trị cần tìm”, $biến_mảng, type) Ví dụ: xét đoạn mã sau: "Dog","b"=>"Cat","c"=>" Horse"); echo array_search("Dog",$a); $b=array("a"=>"5","b"=>5,"c"=>“15"); echo array_search(5,$b,true); ?> 14/08/2021 Lập trình Web 135
  136. Hàm thêm hoặc xóa phần tử mảng Hàm array_unshift() Hàm array_push() Hàm array_shift() Hàm array_pop() 14/08/2021 Lập trình Web 136
  137. Hàm array_unshift() Tác dụng: thêm các phần tử vào đầu mảng. Giá trị trả về của hàm là số phần tử của mảng sau khi thêm. Cú pháp: array_unshift($biến_mảng, giá trị 1, ) Ví dụ: xét đoạn mã sau: "Cat","b"=>"Dog"); echo array_unshift($a,"Horse"); echo $a; ?> 14/08/2021 Lập trình Web 137
  138. Hàm array_push() Tác dụng: cũng giống như hảm array_unshift() nhưng lại thêm vào cuối mảng Cú pháp: array_push($biến_mảng, giá trị 1, giá trị 2, ) Ví dụ: xét đoạn mã sau: "Cat","b"=>"Dog"); echo array_push($a,"Horse"); echo $a; ?> 14/08/2021 Lập trình Web 138
  139. Hàm array_shift() Tác dụng: loại bỏ phần tử đầu tiên của mảng. Kết quả trả về của hàm là giá trị phần tử vừa bị loại bỏ. Cú pháp: array_shift($biến_mảng) Ví dụ: xét đoạn mã sau: "Dog","b"=>"Cat","c"=>" Horse"); echo array_shift($a); echo $a; ?> 14/08/2021 Lập trình Web 139
  140. Hàm array_pop() Tác dụng: cũng giống như array_shift nhưng loại bỏ phần tử cuối cùng Cú pháp: array_pop($biến_mảng) Ví dụ: xét đoạn mã sau: "Dog","b"=>"Cat","c"=>"Horse" ); echo array_pop($a); echo $a; ?> 14/08/2021 Lập trình Web 140
  141. 3.5 CHUỖI KÝ TỰ (STRING) Khái niệm chuỗi ký tự Khai báo chuỗi Làm việc với chuỗi 14/08/2021 Lập trình Web 141
  142. Khái niệm chuỗi ký tự (string) String trong PHP là một chuỗi các ký tự 1 byte. PHP không hỗ trợ Unicode, để làm việc với Unicode bạn phải sử dụng UTF8 với các hàm utf8_encode() – utf8_decode() Chuỗi ký tự của PHP hỗ trợ chiều dài rất lớn 14/08/2021 Lập trình Web 142
  143. Khai báo chuỗi Trong PHP, chuỗi ký tự được khai báo theo 3 cách Dấu nháy đơn (single quote) Dấu nháy kép (double quote) Heredoc 14/08/2021 Lập trình Web 143
  144. Khai báo chuỗi Kiểu dấu nháy đơn 14/08/2021 Lập trình Web 144
  145. Khai báo chuỗi Kiểu dấu nháy kép: kiểu này giống với kiểu dấu nháy đơn nhưng có nhiều hỗ trợ cho các ký tự đặc biệt hơn Khi thực thi, PHP sẽ tìm và thay thế những ký tự đặc biệt được escape (như \n, \t ) cùng với các biến (nếu có) trong xâu Khi sử dụng dấu nháy đơn, giá trị của biến trong xâu, cùng với các ký tự đặc biệt cần escape sẽ không được in ra. 14/08/2021 Lập trình Web 145
  146. Khai báo chuỗi Ví dụ: 14/08/2021 Lập trình Web 146
  147. Khai báo chuỗi Kiểu Heredoc spanning multiple lines using heredoc syntax. EOA;echo($str); $name = "quang"; $d = date("d/m/y"); $str = Ngay $d EOQ;echo($str); ?> 14/08/2021 Lập trình Web 147
  148. Làm việc với chuỗi Truyền biến kiểu chuỗi 14/08/2021 Lập trình Web 148
  149. Làm việc với chuỗi Truy cập đến từng ký tự của chuỗi $str"; $str{strlen($str)-1} = "s"; echo " $str"; ?> 14/08/2021 Lập trình Web 149
  150. Làm việc với chuỗi Các toán tử trên string: toán tử cộng chuỗi 14/08/2021 Lập trình Web 150
  151. 3.6 CÁC HÀM XỬ LÝ TRÊN CHUỖI Hàm định dạng chuỗi Hàm kết hợp hay tách chuỗi Hàm so sánh chuỗi Hàm tìm kiếm và thay thế chuỗi 14/08/2021 Lập trình Web 151
  152. Hàm định dạng chuỗi strtoupper(biến_chuỗi): Chuyển tất cả các ký tự trong chuỗi thành chữ hoa strtolower(biến_chuỗi): Chuyển tất cả các ký tự trong chuỗi thành chữ thường ucfirst(biến_chuỗi): Chuyển ký tự đầu tiên trong chuỗi thành chữ hoa ucwords(biến_chuỗi): Chuyển các ký tự đầu của mỗi từ trong chuỗi thành chữ hoa Hàm cắt ký tự trắng bên trái: ltrim(biến_chuỗi), rtrim(biến_chuỗi) và trim(biến_chuỗi), chop(biến_chuỗi) 14/08/2021 Lập trình Web 152
  153. Hàm định dạng chuỗi "; echo strtoupper($str); echo " "; echo strtolower($str); echo " "; echo ucfirst($str); echo " "; echo ucwords($str); echo " "; ?> 14/08/2021 Lập trình Web 153
  154. Hàm định dạng chuỗi 14/08/2021 Lập trình Web 154
  155. Hàm tách hay kết hợp chuỗi strtok (biến_chuỗi, str): Tách biến chuỗi thành các chuỗi con, sử dụng chuỗi str làm chuỗi xác định cách tách explode(str, biến_chuỗi): Tách chuỗi thành mảng các chuỗi con, sử dụng str làm chuỗi xác định cách tách substr(biến_chuỗi, k [, n]): Trả về chuỗi con từ biến chuỗi, tại vị trí k, lấy n ký tự. implode(str, $mang): Kết hợp các phần tử của mảng thành chuỗi, lấy str làm chuỗi liên kết 14/08/2021 Lập trình Web 155
  156. Hàm tách hay kết hợp chuỗi 14/08/2021 Lập trình Web 156
  157. Hàm tách hay kết hợp chuỗi 14/08/2021 Lập trình Web 157
  158. Hàm so sánh chuỗi (int) strcmp (str1, str2): 0 nếu str1 == str2, n nếu str1>str2, -n nếu str1 str2, -n nếu str1 str2, -n nếu str1<str2 (phân biệt chữ hoa, chữ thường, n là số ngẫu nhiên) 14/08/2021 Lập trình Web 158
  159. Hàm tách hay kết hợp chuỗi 14/08/2021 Lập trình Web 159
  160. Hàm tìm kiếm và thay thế chuỗi strpos(biến_chuỗi,str): trả về vị trí chuỗi con str xuất hiện đầu tiên trong biến_chuỗi, nếu không tìm thấy trả về rỗng. strstr(str1, biến_chuỗi): trả về str1 nếu tìm thấy str1 trong biến_chuỗi. Ngược lại, trả vể false. str_replace(str1, str2, biến_chuỗi): thay chuỗi con str1 bằng str2 trong biến_chuỗi. substr_replace(biến_chuỗi, str, n): thay phần chuỗi tính từ vị trí n trong biến_chuỗi bằng chuỗi str. 14/08/2021 Lập trình Web 160
  161. Hàm tìm kiếm và thay thế chuỗi 14/08/2021 Lập trình Web 161
  162. BÀI TẬP THỰC HÀNH 1. Chạy các ví dụ trong slides để xem kết quả hiện thị lên trình duyệt. 2. Viết chương trình nhập vào một chuỗi ký tự bất kỳ. Sau đó: Đếm số từ có trong chuỗi (các từ cách nhau bởi các khoảng trắng) Đếm số các ký tự xuất hiện trong chuỗi (trong trường hợp có phân biệt chữ hoa chữ thường và không phân biệt chữ hoa chữ thường) 14/08/2021 Lập trình Web 162
  163. BÀI TẬP THỰC HÀNH 3. Tách chuỗi nhập vào thành các phần: Chuỗi địa chỉ email thành username và domain Chuỗi số ngày tháng thành ngày, tháng, năm. Chuỗi họ tên đầy đủ thành họ và tên 14/08/2021 Lập trình Web 163
  164. CHƯƠNG 4: HÀM 4.1 GIỚI THIỆU VỀ HÀM 4.2 CÁC HÀM XÂY DỰNG SẴN 4.3 HÀM TỰ TẠO 4.4 CÁCH GỌI HÀM 14/08/2021 Lập trình Web 164
  165. 4.1. GIỚI THIỆU VỀ HÀM Khái niệm hàm Phân loại hàm 14/08/2021 Lập trình Web 165
  166. Khái niệm hàm Hàm dùng để thực hiện một công việc nào đó. Chẳng hạn như: lấy ngày tháng của hệ thống, kết nối tới CSDL, thông báo lỗi, Tất cả các hàm trong php đều có dạng cơ bản sau: Tên_hàm([Đối số]) Trong đó: ❑ Đối số: Tùy thuộc vào các hàm khác nhau mà có thể có một hoặc nhiều đối số hoặc không có đối số. ❑ Cần nắm được kết quả trả về của hàm ❑ Hàm chỉ được thực thi khi có lời gọi hàm ❑ Có thể gọi hàm ở bất kỳ đâu trong trang 14/08/2021 Lập trình Web 166
  167. Phân loại hàm Hàm trong php được phân làm hai loại Các hàm xây dựng sẵn: Là các hàm dùng để thực hiện các chức năng cơ bản của php Các hàm do người dùng tự định nghĩa: được xây dựng trong quá trình viết code 14/08/2021 Lập trình Web 167
  168. 4.2 CÁC HÀM XÂY DỰNG SẴN Các hàm ngày giờ Các hàm thao tác với MySQL Các hàm thao tác với file Các hàm lọc filter Các hàm thông báo lỗi Các hàm xử lý ngoại lệ 14/08/2021 Lập trình Web 168
  169. Các hàm ngày giờ Dùng để lấy hoặc thiết lập ngày tháng trên Server Một số hàm ngày giờ cơ bản: Hàm date() Hàm time() Hàm getdate() Hàm checkdate() Hàm mktime() 14/08/2021 Lập trình Web 169
  170. Hàm date() Trả về ngày, giờ dựa trên ngày giờ của Server theo định dạng chỉ ra. Cú pháp: date(format, [timestamp]) Trong đó: Format: Là ký tự định dạng đầu ra của ngày, giờ timestamp: Tùy chọn 14/08/2021 Lập trình Web 170
  171. Hàm date() Một số ký tự định dạng: a: am hoặc pm A: AM hoặc PM B: mẫu giờ Internet d: ngày của tháng (01 31) D: ngày của tuần (Mon Sun) F: Tháng có tên đầy đủ (January December) g: giờ (1 12) G: giờ (0 23) h: giờ (01 12) H: giờ (00 23) i: phút (00 59) 14/08/2021 Lập trình Web 171
  172. Hàm date() j: ngày của tháng (1 31) l: ngày của tuần (Monday Sunday) L: kiểm tra năm nhuận (1: nếu năm nhuận, 0: ngược lại) m: tháng (01 12) M: tháng (Jan Dec) n: tháng (1 12) s: giây (00 59) S: hậu tố thứ tự của tiếng anh (st, nd, rd, th) t: số ngày của tháng (28 30) T: thiết lập timezone của máy w: ngày của tuần dạng số (0: Sunday, , 6: Saturday) Y: năm 4 số (2009) y: năm 2 số (09) z: ngày của năm (0 365) 14/08/2021 Lập trình Web 172
  173. Hàm date() Ví dụ 1: VI DU VE HAM DATE() "); echo(date("l dS \of F Y h:i:s A") . " "); echo("Oct 3,1975 was on a ".date("l", mktime(0,0,0,10,3,1975))." "); ?> 14/08/2021 Lập trình Web 173
  174. Hàm date() Ví dụ 2: 14/08/2021 Lập trình Web 174
  175. Hàm time() Trả về số giây đã qua tính từ 00:00:00 GMT ngày 1/1/1970 Cú pháp: time() Ví dụ: VI DU VE HAM TIME() "); echo(date("D F d Y",$t)); ?> 14/08/2021 Lập trình Web 175
  176. Hàm getdate() Trả về một mảng gồm các phần tử như sau: [seconds] – Giây [minutes] - phút [hours] - giờ [mday] – ngày của tháng [wday] – ngày của tuần [year] - năm [yday] – ngày của năm [weekday] – tên của thứ trong tuần [month] – tên của tháng Cú pháp: getdate() 14/08/2021 Lập trình Web 176
  177. Hàm getdate() Ví dụ: VI DU HAM GETDATE() 14/08/2021 Lập trình Web 177
  178. Hàm checkdate() Dùng để kiểm tra ngày, tháng, năm nào đó có hợp lệ không. Nếu có trả về true, ngược lại trả về false Cú pháp: checkdate(month, day, year) Ví dụ: Vi du ham checkdate() 14/08/2021 Lập trình Web 178
  179. Hàm mktime() Dùng để tính toán ngày hợp lệ. Cú pháp: mktime(hour, minute, second, month, day, year) Ví dụ: Vi du ham mktime() "); echo(date("M-d-Y",mktime(0,0,0,14,1,2001))." "); echo(date("M-d-Y",mktime(0,0,0,1,1,2001))." "); echo(date("M-d-Y",mktime(0,0,0,1,1,99))." "); ?> 14/08/2021 Lập trình Web 179
  180. Các hàm thao tác với MySQL Dùng để mở hoặc hủy kết nối, thao tác với CSDL MySQL Một số hàm cơ bản: Hàm mysql_connect() Hàm mysql_close() Hàm mysql_pconnect() Hàm mysql_select_db() Hàm mysql_querry() 14/08/2021 Lập trình Web 180
  181. Hàm mysql_connect() Dùng để mở kết nối tới CSDL chủ MySQL Cú pháp: mysql_connect(server, user, pwd) Ví dụ: Thực hiện kết nối tới máy cục bộ bằng tài khoản mysql_user và password là mysql_pwd Có thể dùng địa chỉ ip thay cho tên server: 14/08/2021 Lập trình Web 181
  182. Hàm mysql_close() Dùng để đóng kết nối tới CSDL MySQL Cú pháp: mysql_close(connection) Ví dụ: 14/08/2021 Lập trình Web 182
  183. Hàm mysql_pconnect() Cũng giống như hàm mysql_connect() nhưng có điểm khác. Tìm kết nối đã được mở trên cùng host, user, pass. Nếu một kết nối được tìm thấy thì nó sẽ không mở thêm kết nối mới Liên kết với MySQL không đóng khi mã thực thi kết thúc Cú pháp: mysql_pconnect(server, user, pwd) 14/08/2021 Lập trình Web 183
  184. Hàm mysql_select_db() Dùng để chuyển từ CSDL này qua CSDL khác Cú pháp: mysql_select_db(database, [connection]) Ví dụ: 14/08/2021 Lập trình Web 184
  185. Hàm mysql_querry() Gửi các câu truy vấn tới MySQL server Cú pháp: mysql_querry(querry, [connection]) Ví dụ: 14/08/2021 Lập trình Web 185
  186. Các hàm thao tác với MySQL Ngoài ra, để thao tác với CSDL còn có một số hàm sau: Hàm mysql_fetch_array(data, [array_type]): trả về bản ghi trong bảng dữ liệu như là một mảng kết hợp với các cột là khóa hoặc mảng numeric. Hàm mysql_affected_rows([connection]): trả về số bản ghi trong bảng bị ảnh hưởng bởi update, delete, insert Hàm mysql_errno([connection]): trả về số của thông điệp lỗi từ hoạt động của MySQL. Hàm mysql_error([connection]): trả về chi tiết thông điệp bị lỗi. 14/08/2021 Lập trình Web 186
  187. Các hàm thao tác với MySQL Hàm mysql_num_rows(data): trả về số bản ghi trong bảng khi select. Hàm mysql_result(data of querry,[m, n]): trả về giá trị trong bảng tương ứng với hàng m và cột n. Hàm mysql_num_fields([connection]): trả về số trường của bảng. Hàm mysql_ping(): kiểm tra kết nối server. Nếu chưa có kết nối thì reconnect. Hàm mysql_fetch_assoc(data): Trả các bản ghi về như mảng kết hợp 14/08/2021 Lập trình Web 187
  188. Các hàm thao tác với file Dùng để mở, đọc, ghi, dữ liệu vào file Một số hàm cơ bản: Hàm fopen(file_name, format): dùng để mở file có tên file_name theo định dạng format (r, r++, w, w++, a ) Hàm fclose(biến_file): dùng để đóng file đang mở Hàm feof(biến_file): dùng để kiểm tra xem đã kết thúc file hay chưa Hàm fgets(biến_file): dùng để đọc theo từng dòng Hàm fgetc(biến_file): đọc theo từng ký tự 14/08/2021 Lập trình Web 188
  189. Các hàm thao tác với file Ví dụ 14/08/2021 Lập trình Web 189
  190. Các hàm thao tác với file Ví dụ 14/08/2021 Lập trình Web 190
  191. Các hàm lọc Một phần khá quan trọng của bất kỳ ứng dụng web nào là việc kiểm tra tính hợp lệ và lọc dữ liệu từ những nguồn vào không đảm bảo độ tin cậy Các hàm lọc được thiết kế để lọc dữ liệu một cách dễ dàng và nhanh chóng nhất Các hàm lọc trong php gồm Hàm filter_var(): lọc một biến đơn Hàm filter_var_array(): lọc nhiều biến với cùng bộ lọc hoặc các bộ lọc khác nhau Hàm filter_input(): nhận vào một biến và lọc nó Hàm filter_input_array(): nhận vào nhiều biến và lọc nó 14/08/2021 Lập trình Web 191
  192. Các hàm lọc Ví dụ 1: 14/08/2021 Lập trình Web 192
  193. Các hàm lọc Ví dụ 2: array("min_range"=>0 ,"max_range"=>256)); if(!filter_var($var, FILTER_VALIDATE_INT, $int_options)) echo"Integer is not valid"; else echo"Integer is valid"; ?> 14/08/2021 Lập trình Web 193
  194. Các hàm lọc Ví dụ 3: 14/08/2021 Lập trình Web 194
  195. Các hàm thông báo lỗi Dùng để thông báo và xử lý lỗi Một số hàm cơ bản: Hàm error_log() Hàm user_error() Hàm error_get_last() Hàm set_error_handler() Hàm restore_error_handler() 14/08/2021 Lập trình Web 195
  196. Hàm error_log() Truyền một lỗi đến error log chủ, một file hoặc một đích ở xa. Cú pháp: error_log(error,[type, destination, header]) Ví dụ: 1) {error_log("A custom error has been triggered", 1,"someone@example.com","From: webmaster@example.com"); } ?> 14/08/2021 Lập trình Web 196
  197. Hàm user_error() Dùng để tạo thông báo lỗi người dùng định nghĩa Cú pháp: user_error(error_message) Ví dụ: 1) { user_error("A custom error has been triggered"); } ?> 14/08/2021 Lập trình Web 197
  198. Hàm error_get_last() Thông báo lỗi xuất hiện cuối cùng. Kết quả trả về là một mảng gồm 4 khóa và giá trị: [type] – loại lỗi [message] – thông điệp lỗi [file] – file có lỗi xuất hiện [line] – dòng có lỗi xuất hiện Cú pháp: error_get_last() 14/08/2021 Lập trình Web 198
  199. Hàm error_get_last() Ví dụ: Vi du ham error_get_last() thong diep: $arr[message] tap tin: $arr[file] dong: $arr[line]"); ?> 14/08/2021 Lập trình Web 199
  200. Hàm set_error_handler() Xây dựng hàm người dùng để xử lý lỗi Cú pháp: set_error_handler(error_function) Ví dụ: Custom error: [$errno] $errstr "; echo " Error on line $errline in $errfile "; echo "Ending Script"; die();} set_error_handler("customError"); $test=2; if ($test>1)trigger_error("A custom error has been triggered"); ?> 14/08/2021 Lập trình Web 200
  201. Hàm restore_error_handler() Khôi phục xử lý lỗi trước đó sau khi đã dùng hàm set_error_handler() Cú pháp: restore_error_handler() Ví dụ: Custom error: [$errno] $errstr "; echo " Error on line $errline in $errfile ";} set_error_handler("customError"); $test=2; if ($test>1) { trigger_error("A custom error has been triggered");} restore_error_handler(); if ($test>1) { trigger_error("A custom error has been triggered");} ?> 14/08/2021 Lập trình Web 201
  202. 4.3 CÁC HÀM TỰ TẠO Cách xây dựng hàm trong php Một số lưu ý khi xây dựng hàm 14/08/2021 Lập trình Web 202
  203. Cách xây dựng hàm trong php Cú pháp: function Ten_ham(ds tham số nếu có) { thân hàm; [return giá trị] } 14/08/2021 Lập trình Web 203
  204. Truyền tham số PHP hỗ trợ truyền tham số vào hàm, truyền tham số dưới dạng tham chiếu (reference), truyền tham số với giá trị mặc định 14/08/2021 Lập trình Web 204
  205. Truyền tham số (2) function Loai_cafe ($type = "cappuccino") { return "Making a cup of $type.\n";} echo Loai_cafe (); echo Loai_cafe ("espresso"); function Loai_yogurt ($type = "acidophilus", $flavour) { return "Making a bowl of $type $flavour.\n";} // Không thực thi đúng echo Loai_yogurt ("raspberry"); function Loai_yogurt ($flavour, $type = "acidophilus") { return "Making a bowl of $type $flavour.\n";} // Thực thi echo Loai_yogurt ("raspberry"); 14/08/2021 Lập trình Web 205
  206. Truyền tham số (3) Ta có thể truyền tham số với số lượng không xác định. Khi đó sẽ sử dụng các hàm sau func_num_args(): Số lượng tham số func_get_args(): Lấy danh sách các tham số 14/08/2021 Lập trình Web 206
  207. Giá trị trả về Để trả về giá trị của hàm, sử dụng lệnh return. Có thể sử dụng bất cứ kiểu nào trong giá trị trả về của hàm (kể cả mảng và đối tượng) 14/08/2021 Lập trình Web 207
  208. Biến hàm Bạn có thể sử dụng các biến hàm (tức là bạn có thể gọi hàm dưới dạng ten_bien() ). Biến hàm thường được sử dụng cho các hàm callback \n";} function bar($arg = '') {echo "In bar(); argument was '$arg'. \n";} // This is a wrapper function around echo function echoit($string) {echo $string;} $func = 'foo'; $func(); // This calls foo() $func = 'bar'; $func('test'); // This calls bar() $func = 'echoit'; $func('test'); // This calls echoit() ?> 14/08/2021 Lập trình Web 208
  209. Biến hàm 2( ) $name(); // This calls the Bar() method } function Bar() { echo "This is Bar"; } } $foo = new Foo(); $funcname = "Var"; $foo->$funcname(); // This calls $foo->Var() ?> 14/08/2021 Lập trình Web 209
  210. 4.4 SỬ DỤNG LẠI MÃ PHP Vì sao phải sử dụng lại mã php Cách sử dụng lại mã php 14/08/2021 Lập trình Web 210
  211. Vì sao sử dụng lại mã php? Chi phí Độ tin cậy Tính nhất quán 14/08/2021 Lập trình Web 211
  212. Cách sử dụng lại mã php Để sử dụng lại mã php ta có thể dùng các khai báo sau: Khai báo require() Khai báo include() 14/08/2021 Lập trình Web 212
  213. Khai báo require() Dùng để nhúng một trang này vào đoạn mã của một trang khác mà không cần phải viết lại mã. Ví dụ: Ta có trang Bienluan.php 14/08/2021 Lập trình Web 213
  214. Khai báo require() Sau đó ta xây dựng trang PTBN.php và có sử dụng require() để nhúng trang Bienluan.php vào. 14/08/2021 Lập trình Web 214
  215. Khai báo require() Lưu ý: ❑ Có thể nhúng bất kỳ dạng file có phần mở rộng nào vào trang php. Tuy nhiên, chỉ có những trang có phần mở rộng .php hoặc có đoạn mã php sẽ được thực thi. ❑ Khi nhúng file bằng require() thì nội dung của file trong khai báo require() sẽ là một phần của trang php hiện tại, và chúng có thể được thực thi khi trang php được gọi. ❑ Khai báo require() cần được đặt giữa cặp thẻ 14/08/2021 Lập trình Web 215
  216. Khai báo include() Cả include và require đều có tác dụng là nhúng file vào trang php. Tuy nhiên, giữa chúng có điểm khác là Khi nạp bằng require thì web server cần phải dịch lại mỗi khi thực thi. Trong trường hợp nhúng nhiều file vào trang php mà phụ thuộc vào điều kiện nào đó thì ta nên sử dụng include. 14/08/2021 Lập trình Web 216
  217. Khai báo include() Ví dụ: Xét đoạn mã 14/08/2021 Lập trình Web 217
  218. Thực hành 1. Tạo các file có tên như sau: - Top.php - Left.php - Right.php - Bottom.html Sau đó, sử dụng require hoặc include để chèn vào trang index.php như sau: 14/08/2021 Lập trình Web 218
  219. Thực hành Top.php Phần hiển thị nội dung Left.php chính right.php Bottom.html 14/08/2021 Lập trình Web 219
  220. Thực hành 2. Tạo 2 file có tên như sau: - Giaiptbn.php - Giaiptbh.php Sau đó, sử dụng require hoặc include để chèn vào trang giainghiem.php. 3. Nhập vào xâu ngày tháng năm, sau đó tách xâu, kiểm tra và thông báo chính xác ngày, tháng, năm nhập vào. Nếu giá trị nhập vào không hợp lệ thì đưa ra thông báo. 14/08/2021 Lập trình Web 220
  221. Thực hành 4. Tạo một file .txt sau đó sử dụng các hàm thao tác với file để: - Đọc dữ liệu từ file và hiển thị ra màn hình - Ghi nội dung mới vào file 14/08/2021 Lập trình Web 221
  222. CHƯƠNG 5: SESSION VÀ COOKIE 5.1 GIỚI THIỆU VỀ SESSION 5.2 GIỚI THIỆU VỀ COOKIE 5.3 SỬ DỤNG SESSION VỚI COOKIE 14/08/2021 Lập trình Web 222
  223. 5.1. GIỚI THIỆU VỀ SESSION Khái niệm session Chức năng của session Làm việc với session 14/08/2021 Lập trình Web 223
  224. Khái niệm session Session là một biến được dùng để lưu trữ thông tin hoặc sự thay đổi về phiên làm việc của một người dùng nào đó từ trang này đến trang khác trong cùng một Website. Các biến session chứa thông tin của người dùng và có tác dụng đối với tất cả các trang trong một ứng dụng. Các sesion được hỗ trợ trong các phiên bản php khác nhau cũng có điểm khác nhau. 14/08/2021 Lập trình Web 224
  225. Chức năng của session Sesion có chức năng lưu trữ thông tin của người dùng trên server cho lần sử dụng tiếp theo. Thông tin session chỉ mang tính chất tạm thời, nghĩa là nó sẽ bị mất đi khi người dùng hủy chúng, thời gian sống đã hết hoặc kết thúc trình duyệt. Nếu muốn lưu trữ lâu dài thì cần lưu nó trong CSDL. Các sesion làm việc bằng cách tạo ra một unique id (UID) cho mỗi Browser và lưu trữ các biến dựa trên UID này. 14/08/2021 Lập trình Web 225
  226. Chức năng của session Khi Browser mở ra ứng với trang Web bất kỳ của Website, session ID có giá trị là một dãy số ngẫu nhiên được lưu trữ trên phía client. Session ID có chu kỳ sống cho đến khi hết hạn sử dụng Có thể truyền session ID với URL hoặc ghi chúng ra Cookie Lưu ý: Thời hạn hết sử dụng của session do cấu hình của trình chủ Web server quy định. Session ID là thông tin duy nhất lưu trữ trên Client, các biến session được lưu trữ trong một tập tin dạng text trên server 14/08/2021 Lập trình Web 226
  227. Làm việc với session Khởi động session Khai báo và gán giá trị cho biến session Lấy giá trị của biến session Hủy bỏ biến session 14/08/2021 Lập trình Web 227
  228. Khởi động session Để sử dụng session, trước tiên cần khởi động nó. Có hai cách dùng để khởi động session: Có thể sử dụng cú pháp: session_start(); Cấu hình lại trong trang php.ini như sau: session.auto_start = 0 Nếu sử dụng hàm session_start() thì hàm này cần phải đặt trước thẻ 14/08/2021 Lập trình Web 228
  229. Khai báo và gán giá trị cho biến session Sau khi khởi động session, để khai báo và lưu trữ giá trị cho biến session ta sử dụng biến $_SESSION: $_SESSION[‘chỉ số’] = giá trị; Lưu ý: tên biến không có dấu $ ở trước Ví dụ: ta có đoạn code trong file1.php như sau: 14/08/2021 Lập trình Web 229
  230. Khai báo và gán giá trị cho biến session Khoi dong va dang ky session 3 session da duoc dang ky. 14/08/2021 Lập trình Web 230
  231. Lấy giá trị của biến session Sau khi được khởi động và lưu trữ thông tin, các session này có hiệu lực trên mọi trang php mà người dùng truy cập của Website ứng với Browser đang mở. Chẳng hạn, đoạn mã sau dùng để lấy nội dung được lưu trữ trong các session ở trang file1.php 14/08/2021 Lập trình Web 231
  232. Lấy giá trị của biến session Lay gia tri bien session Doc gia tri luu tru trong cac bien session o file1.php "; echo "Usename: ". $_SESSION['user']." "; echo "Email: ". $_SESSION['email']." "; echo "Name: ". $_SESSION['name']." "; ?> 14/08/2021 Lập trình Web 232
  233. Session ID Php sử dụng cookie để lưu trữ thông tin lấy được từ session ID. Ngoài ra, cũng có thể lưu trữ session ID vào URL Ví dụ: 14/08/2021 Lập trình Web 233
  234. Session ID 14/08/2021 Lập trình Web 234
  235. Hủy bỏ biến session Trường hợp không muốn sử dụng các biến session, ta có thể hủy bỏ chúng bằng cách gọi hàm session_unset() hoặc session_destroy(). Hàm session_unset() dùng để hủy bỏ các biến session đang có hiệu lực. Nếu chỉ muốn hủy bỏ một biến session nào đó ta cần truyền tham số cho hàm Hàm session_destroy() dùng để kết thúc tất cả các biến session và dữ liệu lưu trữ trong đó. 14/08/2021 Lập trình Web 235
  236. Hủy bỏ biến session ". $_SESSION['user']." "; session_unset($_SESSION['user']); echo "Email: ". $_SESSION['email']." "; echo "Name: ". $_SESSION['name']." "; ?> 14/08/2021 Lập trình Web 236
  237. 5.2. GIỚI THIỆU VỀ COOKIE Cookie là gì? Làm việc với Cookie 14/08/2021 Lập trình Web 237
  238. Cookie là gì? Cookie thường được dùng để xác định người sử dụng Nó được xem như session nhưng lưu trữ thông tin trên trình khách (client) Tại thời điểm nào đó, một máy tính yêu cầu một trang web cùng với trình duyệt browser thì nó cũng gửi Cookie đi kèm. 14/08/2021 Lập trình Web 238
  239. Làm việc với cookie Gán giá trị cho cookie Lấy giá trị của cookie Xóa cookie 14/08/2021 Lập trình Web 239
  240. Gán giá trị cho cookie Để gán giá trị cho cookie ta sử dụng hàm setcookie theo cú pháp: setcookie(name, [value, expire, path, domain]); Hàm setcookie cần đặt trước thẻ Ví dụ: 14/08/2021 Lập trình Web 240
  241. Lấy giá trị của cookie Để lấy giá trị của cookie ta sử dụng biến $_COOKIE theo cú pháp: $_COOKIE[‘tenbien’]; Chẳng hạn, để lấy thông tin được lưu trong cookie ở trên ta viết Vi du ve cookie Lay gia tri cua cookie! 14/08/2021 Lập trình Web 241
  242. Xóa cookie Để xóa cookie, cần chắc chắn thời điểm có hiệu lực là trong quá khứ Ví dụ: 14/08/2021 Lập trình Web 242
  243. Làm việc với cookie Trong trường hợp Browser không hỗ trợ cookie, cần phải sử dụng phương thức khác để chuyển thông tin từ trang này sang trang khác trong ứng dụng Một phương thức được sử dụng là chuyển thông tin thông qua form 14/08/2021 Lập trình Web 243
  244. Làm việc với cookie Ví dụ: ta có trang index.html như sau: Xay dung form nhap thong tin! Name: Age: 14/08/2021 Lập trình Web 244
  245. Làm việc với cookie Trang welcome.php có nội dung như sau: Welcome You are years old. 14/08/2021 Lập trình Web 245
  246. Làm việc với cookie Trang welcome.php có nội dung như sau: Welcome You are years old. 14/08/2021 Lập trình Web 246
  247. 5.3. SỬ DỤNG SESSION VỚI COOKIE Gán cookie bằng session Sử dụng cookie để lưu trữ session ID 14/08/2021 Lập trình Web 247
  248. Gán cookie bằng session ◼ Đối với cookie có một số vấn đề sau đây: ◼ Một vài webrowser không hỗ trợ cookie và một số người dùng không có các cookie trên browser của họ. ◼ Đây là lý do để PHP sử dụng cả hai cách thức: cookie và URL method. ◼ Khi sử dụng PHP session, ta sẽ không phải thiết lập các cookie, những hàm session sẽ lưu giữ những thông tin này cho chúng ta 14/08/2021 Lập trình Web 248
  249. Gán cookie bằng session ◼ Để thiết lập session cookie ta dùng hàm: void session_set_cookie_params (int lifetime [, string path [, string domain]]) ::Welcome to PHP Session-Cookie 14/08/2021 Lập trình Web 249
  250. Gán cookie bằng session ◼ Để xem nội dung của các cookie đã được thiết lập bởi session ta sử dụng hàm: session_get_cookie_params(). ◼ Hàm này sẽ trả về một mảng liên kết mà các phần tử của mảng chứa các thông tin như: lifetime, path, domain, . 14/08/2021 Lập trình Web 250
  251. Sử dụng cookie để lưu trữ session ID  PHP sẽ sử dụng các cookie mặc định cùng với session. Nếu có thể được, một cookie sẽ được thiết lập chứa SessionID.  Cách khác: đưa sessionID vào trong thẻ link. SessionID được chứa trong hằng SID.  Thêm vào cuối thẻ link hằng SID để dùng nó như là phương thức GET. Ví dụ sau: 14/08/2021 Lập trình Web 251
  252. Sử dụng cookie để lưu trữ session ID Khoi dong va dang ky session 14/08/2021 Lập trình Web 252
  253. Sử dụng cookie để lưu trữ session ID Lay gia tri bien session $c_value) print "$c_name = $c_value "; list($a,$b) = each($_GET); echo "SessionID:".$a; ?> 14/08/2021 Lập trình Web 253
  254. CHƯƠNG 6: TỔNG QUAN VỀ MySQL 6.1 GIỚI THIỆU VỀ MySQL 6.2 TẠO CƠ SỞ DỮ LIỆU VÀ NGƯỜI DÙNG 6.3 CÁC KIỂU DỮ LIỆU TRONG MySQL 6.4 CÁC CÂU LỆNH SQL 6.5 CÁC HÀM TRONG MySQL 14/08/2021 Lập trình Web 254
  255. 6.1 GIỚI THIỆU VỀ MySQL MySQL là gì? Các đặc điểm của MySQL Lịch sử phát triển Download, cài đặt và cấu hình 14/08/2021 Lập trình Web 255
  256. MySQL là gì? MySQL là: Một hệ quản trị CSDL Một hệ quản trị CSDL quan hệ Được phát triển, phân phối và hỗ trợ bởi MySQL AB. Để làm việc với MySQL cần đăng ký kết nối, tạo CSDL, quản lý người dùng, phân quyền sử dụng, thiết kế đối tượng Table của CSDL và xử lý dữ liệu. Để quản lý và thao tác trên CSDL ta có thể sử dụng giao diện đồ họa hoặc dạng Command line. 14/08/2021 Lập trình Web 256
  257. Đặc điểm của MySQL MySQL cũng giống như các hệ quản trị CSDL: Access, SQL Server, PostgreSQL, Oracle, Phần mềm mã nguồn mở do đó có thể tải miễn phí từ trang chủ. Nó có nhiều phiên bản cho các hệ điều hành khác nhau: phiên bản Win32 cho các hệ điều hành dòng Windows, Linux, Mac OS X, Unix, Solaris 14/08/2021 Lập trình Web 257
  258. Đặc điểm của MySQL MySQL là cơ sở dữ liệu tốc độ cao, ổn định và dễ sử dụng, có tính khả chuyển, hoạt động trên nhiều hệ điều hành cung cấp một hệ thống lớn các hàm tiện ích rất mạnh. Với tốc độ và tính bảo mật cao, MySQL rất thích hợp cho các ứng dụng có truy cập CSDL trên internet. MySQL server hoạt động trong các hệ thống nhúng hoặc client/server. 14/08/2021 Lập trình Web 258
  259. Đặc điểm của MySQL 14/08/2021 Lập trình Web 259
  260. Lịch sử phát triển 14/08/2021 Lập trình Web 260
  261. Lịch sử phát triển 14/08/2021 Lập trình Web 261
  262. Lịch sử phát triển 14/08/2021 Lập trình Web 262
  263. Download, cài đặt và cấu hình Có thể download miễn phí phần mềm MySQL tại địa chỉ: Sau đó tiến hành cài đặt theo các bước: Bước 1: Nhấn next 14/08/2021 Lập trình Web 263
  264. Download, cài đặt và cấu hình Bước 2: Nhấn next 14/08/2021 Lập trình Web 264
  265. Download, cài đặt và cấu hình Bước 3: Nhấn next 14/08/2021 Lập trình Web 265
  266. Download, cài đặt và cấu hình Bước 4: Nhấn next 14/08/2021 Lập trình Web 266
  267. Download, cài đặt và cấu hình Bước 5: Nhấn install sau đó nhấn next 14/08/2021 Lập trình Web 267
  268. Download, cài đặt và cấu hình Bước 6: Finish 14/08/2021 Lập trình Web 268
  269. Download, cài đặt và cấu hình Ngoài ra ta có thể sử dụng phpmyadmin được tích hợp trong XAMMP 14/08/2021 Lập trình Web 269
  270. 7.2 TẠO CSDL VÀ NGƯỜI DÙNG Kết nối và tạo CSDL Quản lý người dùng Cấp quyền cho người dùng Xóa quyền của người dùng 14/08/2021 Lập trình Web 270
  271. Kết nối và tạo CSDL Để kết nối cơ sở dữ liệu ta có thể thực hiện theo hai cách: Kết nối và tạo CSDL bằng Command line Kết nối và tạo CSDL bằng giao diện đồ họa: MySQL Administrator hoặc phpmyadmin 14/08/2021 Lập trình Web 271
  272. Quản lý người dùng Để đăng nhập vào MySQL ta có thể sử dụng user là root và pass là rỗng Ngoài tài khoản này ta có thể tạo thêm các tài khoản cho người dùng với các users và pass khác nhau. 14/08/2021 Lập trình Web 272
  273. Cấp quyền cho người dùng Với quyền root ta có thể thực hiện mọi thao tác trên CSDL: select, update, insert, delete, Tuy nhiên, khi tạo quyền người dùng ta cũng có thể hạn chế bớt một số quyền nhất định nào đó 14/08/2021 Lập trình Web 273
  274. Xóa quyền hoặc tài khoản người dùng Sau khi cấp quyền cho người dùng ta có thể thêm hoặc loại bỏ một số quyền nào đó. Với việc truy cập vào tài khoản root ta có thể xóa các tài khoản người dùng đã được tạo ra. 14/08/2021 Lập trình Web 274
  275. 7.3 CÁC KIỂU DỮ LIỆU TRONG MySQL Dữ liệu kiểu numeric Dữ liệu kiểu date and time Dữ liệu kiểu string 14/08/2021 Lập trình Web 275
  276. Dữ liệu kiểu numeric Dữ liệu kiểu numeric gồm các kiểu sau: Tinnyint: Lưu các số nguyên không dấu (unsigned) từ 0- 255 hoặc các số nguyên có dấu từ -128 -> 127 Mediumint: Lưu các số nguyên từ 0 đến 16.777.215 hoặc từ -8.388.608 đến 8.388.607 Int: Lưu các số nguyên từ 0 đến 4.294.967.295 hoặc từ - 2.147.483.648 đến 2.147.483.647 Bigint Float Doube Decimal/real 14/08/2021 Lập trình Web 276
  277. Dữ liệu kiểu date and time Dữ liệu kiểu date and time gồm các kiểu sau: Date: Lưu trữ ngày dạng yyy-mm-dd. Cho phép giá trị từ 1000-01-01 đến 9999-12-31 Datetime: Lưu trữ dạng yyyy-mm-dd hh:mm:ss Timestamp: Tự động ghi nhận thời gian thay đổi gần nhất. Tùy thuộc vào độ rộng của cột nằm trong khoảng từ 2 đến 14 (yy đến yyyy-mm-dd hh:mm:ss) Time: Dùng để lưu trữ giờ định dạng hh:mm:ss. Year: Dùng để lưu năm bắt đầu từ 1970 14/08/2021 Lập trình Web 277
  278. Dữ liệu kiểu string Dữ liệu kiểu string gồm các kiểu sau: Char: Chiều dài tối đa 255 ký tự, đây là kiểu có chiều dài cố định. Varchar: Cũng tương tự kiểu char có chiều dài tối đa 255 ký tự, song có điểm khác là có chiều dài thay đổi, các giá trị sẽ không bị nối thêm ký tự trắng. Tinytext: là kiểu ký tự văn bản nhị phân. Có chiều dài tối đa 255. Text: có chiều dài 65.535 ký tự. Các chỉ mục có thể được tạo trên 255 ký tự đầu của cột text Mediumtext: có chiều dài 16.777.215 Longtext: có chiều dài >4 tỉ ký tự Enum, Set, 14/08/2021 Lập trình Web 278
  279. 6.4 CÁC CÂU LỆNH SQL SQL là gì? Các câu lệnh SQL cơ bản 14/08/2021 Lập trình Web 279
  280. 7.4 CÁC CÂU LỆNH SQL SQL là ngôn ngữ dùng để truy vấn CSDL Được chia làm 4 loại: DDL (Data Definition Language) DML (Data Manipulationn Language) DCL (Data Control Language) TCL (Transaction Control Language) Các câu lệnh SQL thông dụng: Câu lệnh Select Câu lệnh Insert Câu lệnh Update Câu lệnh Delete Câu lệnh Join 14/08/2021 Lập trình Web 280
  281. Câu lệnh SELECT Dùng để truy vấn dữ liệu từ một hay nhiều bảng khác nhau và trả về kết quả là một tập mẫu tin thỏa mãn điều kiện nào đó Cú pháp: SELECT [FROM ] [WHERE ] [GROUP BY ] [HAVING ] [ORDER BY ] [LIMIT FromNumber | ToNumber] 14/08/2021 Lập trình Web 281
  282. Câu lệnh SELECT Trong đó, danh sách các cột: Tên các cột, biểu thức kết hợp giữa các cột của bảng Trường hợp truy vấn tất cả các cột của bảng ta sử dụng toán tử * thay vì chỉ ra danh sách tất cả các cột Trường hợp, có các cột cùng tên ở các bảng khác nhau thì ta cần chỉ ra tên bảng đi trước theo cú pháp: Tên_bảng.Tên_cột 14/08/2021 Lập trình Web 282
  283. Câu lệnh SELECT Câu lệnh SELECT với mệnh đề FROM: dùng để truy vấn dữ liệu từ các cột hoặc biểu thức cho cột đó từ bảng được chỉ ra sau mệnh đề FROM Ví dụ: SELECT * FROM Sinhvien; SLECT Masv, HoTen FROM Sinhvien; SELECT * FROM Sinhvien LIMIT 0, 10; 14/08/2021 Lập trình Web 283
  284. Câu lệnh SELECT Câu lệnh SELECT với mệnh đề WHERE: dùng để truy vấn dữ liệu từ các cột hoặc biểu thức cho cột đó từ bảng được chỉ ra sau mệnh đề FROM và thỏa mãn điều kiện nào đó được chỉ ra sau mệnh đề WHERE Ví dụ: SELECT * FROM Sinhvien WHERE conditions; SLECT Masv, HoTen FROM Sinhvien WHERE conditions; Lưu ý: các phép toán được sử dụng để thiết lập các điều kiện sau WHERE là các phép toán Quan hệ và Logic 14/08/2021 Lập trình Web 284
  285. Câu lệnh SELECT Các phép toán quan hệ: >, >=, Các phép toán Logic: and, or, not, not in, between, like, not like, in Ví dụ: SELECT * FROM Sinhvien WHERE Tongdiem > 2.0 SELECT * FROM Sinhvien WHERE Hoten like ‘%Hoa’; 14/08/2021 Lập trình Web 285
  286. Câu lệnh SELECT Câu lệnh SELECT với mệnh đề ORDER BY: dùng để truy vấn dữ liệu và kết quả trả về được sắp xếp tăng dần (ASC) hoặc giảm dần (DESC) trên cột nào đó. Ví dụ: SELECT * FROM Sinhvien ORDER BY Tongdiem DESC; SELECT * FROM Sinhvien ORDER BY Hoten ASC; Trường hợp sắp xếp theo nhiều cột thì các cột được phân cách nhau bởi dấu phẩy (,) 14/08/2021 Lập trình Web 286
  287. Câu lệnh SELECT Câu lệnh SELECT với mệnh đề GROUP BY: dùng để truy vấn dữ liệu và kết quả trả về được nhóm lại theo một cột nào đó. Ví dụ: SELECT Tongdiem, count(Tongdiem) FROM Sinhvien GROUP BY Tongdiem ORDER BY Tongdiem; 14/08/2021 Lập trình Web 287
  288. Câu lệnh SELECT Câu lệnh SELECT với mệnh đề AS: sử dụng khi cần phải thay đổi tên cột nào đó trong câu truy vấn. Ví dụ: SELECT Tongdiem, count(Tongdiem) AS Sosv FROM Sinhvien GROUP BY Tongdiem ORDER BY Tongdiem; 14/08/2021 Lập trình Web 288
  289. Câu lệnh SELECT Câu lệnh SELECT với mệnh đề LIMIT N, M: dùng để giới hạn số mẫu tin cần truy vấn từ vị trí thứ N đến vị trí thứ M. Ví dụ: SELECT * FROM Sinhvien LIMIT 0, 10; SELECT * FROM Sinhvien ORDER BY Tongdiem DESC LIMIT 0, 10; 14/08/2021 Lập trình Web 289
  290. Câu lệnh SELECT Câu lệnh SELECT với mệnh đề DISTINCT: dùng để truy vấn dữ liệu và kết quả trả về được nhóm lại theo một cột nào đó. Ví dụ: SELECT Tongdiem, count(Tongdiem) FROM Sinhvien GROUP BY Tongdiem ORDER BY Tongdiem; 14/08/2021 Lập trình Web 290
  291. Câu lệnh INSERT Được sử dụng khi cần thêm mẫu tin vào bảng trong CSDL MySQL. Khi thêm dữ liệu, cần chú ý đến kiểu dữ liệu của các cột mình cần thêm dữ liệu. Cần quan tâm đến quyền của User đăng nhập có được phép Insert hay không Khi Insert dữ liệu vào bảng có 3 trường hợp: Insert từ giá trị cụ thể Lấy giá trị từ một hoặc nhiều bảng khác Bao gồm cả hai trường hợp 14/08/2021 Lập trình Web 291
  292. Câu lệnh INSERT Ví dụ: Insert vào bảng từ giá trị cụ thể. INSERT INTO Sinhvien (Masv, Hoten, Tongdiem) VALUES (‘0073’, ‘Lê Anh Ngọc’, 2.37); ❑ Insert vào bảng từ giá trị của bảng khác INSERT INTO Sinhvien (Masv, Hoten, Tongdiem) SELECT Mahs, Hoten, Tongdiem FROM Hocsinh; Insert vào bảng từ giá trị cụ thể, bảng khác: INSERT INTO [ ] SELECT [danh sách các cột], danh sách giá trị FROM WHERE 14/08/2021 Lập trình Web 292
  293. Câu lệnh UPDATE Dùng để cập nhật lại dữ liệu đã tồn tại trong bảng. Nếu cập nhật giá trị cụ thể: UPDATE SET = , [ = ] [WHERE ] Cập nhật giá trị từ bảng khác: UPDATE SET = UPDATE có thể ảnh hưởng đến nhiều bảng nhưng cập nhật giá trị chỉ có hiệu lực trên bảng đó. 14/08/2021 Lập trình Web 293
  294. Câu lệnh UPDATE Ví dụ: ❑ UPDATE Sinhvien SET Hoten=‘Le Thi B’ WHERE Masv = ‘003’; ❑ UPDATE Sinhvien SET Hoten= (SELECT Hoten FROM Hocsinh WHERE Mahs = Sinhvien.Masv) 14/08/2021 Lập trình Web 294
  295. Câu lệnh DELETE Dùng để xóa mẫu tin trong bảng được chỉ ra bởi tên bảng và mệnh đề WHERE (nếu có) nhằm xác định mẫu tin cần xóa theo một điều kiện nào đó. DELETE FROM WHERE Conditions: có thể là phép toán giữa các cột và giá trị hoặc giá trị là kết quả trả về của một câu lệnh SELECT khác Lưu ý: không có khái niệm xóa giá trị trong một cột, vì xóa giá trị một cột đồng nghĩa với cập nhật cột đó bằng giá trị rỗng 14/08/2021 Lập trình Web 295
  296. Câu lệnh DELETE Ví dụ: ❑ DELETE FROM Sinhvien WHERE Masv = ‘001’; Lưu ý: trong trường hợp có ràng buộc về quan hệ của dữ liệu, thì việc xóa mẫu tin cần được thực hiện ở bảng con trước bảng cha. 14/08/2021 Lập trình Web 296
  297. Câu lệnh JOIN Dùng để kết hợp dữ liệu trên hai hay nhiều bảng lại với nhau Cần xác định cột nào trong bảng này có quan hệ với cột nào trong bảng kia Các dạng của JOIN Inner Join Left Join Right Join 14/08/2021 Lập trình Web 297
  298. Câu lệnh JOIN Inner Join: Dùng để kết hợp các bảng dữ liệu Cú pháp: SELECT [các cột] FROM INNER JOIN ON WHERE . ODER BY Ví dụ: SELECT Hoten, Tongdiem FROM Sinhvien INNER JOIN Hocsinh ON Sinhvien.Masv = Hocsinh.Masv WHERE Tongdiem >2.0 ORDER BY Tongdiem ASC Lưu ý: nếu cần trả về kết quả là tất cả các cột của các bảng tham gia Inner Join ta áp dụng cú pháp: 14/08/2021 Lập trình Web 298
  299. Câu lệnh JOIN Lưu ý: nếu cần trả về kết quả là tất cả các cột của các bảng tham gia Inner Join ta áp dụng cú pháp: SELECT bảng 1.*, bảng 2.* [, bảng n.*] FROM bảng 1 INNER JOIN bảng 2 ON nếu trong các bảng cần kết nối có tên cột giống nhau thì câu lệnh SQL dạng SELECT cần chỉ rõ cột thuộc bảng nào. Trường hợp cả hai cùng lấy dữ liệu ra thì cần chuyển ánh xạ tên khác cho cột thông qua mệnh đề AS 14/08/2021 Lập trình Web 299
  300. Câu lệnh JOIN Left Join: Dùng để kết hợp các bảng dữ liệu khi muốn trả về kết quả là những mẫu tin của bảng bên trái tồn tại ứng với những mẫu tin ở bảng bên phải không tồn tại. Cú pháp: SELECT [các cột] FROM LEFT JOIN ON WHERE . ODER BY 14/08/2021 Lập trình Web 300
  301. Câu lệnh JOIN Right Join: Dùng để kết hợp các bảng dữ liệu khi muốn trả về kết quả là những mẫu tin của bảng bên phải tồn tại dù bảng bên trái không tồn tại Cú pháp: SELECT [các cột] FROM RIGHT JOIN ON WHERE . ODER BY 14/08/2021 Lập trình Web 301
  302. 7.5 CÁC HÀM TRONG MySQL Các hàm trong phát biểu Group by Các hàm về xử lý chuỗi Các hàm về xử lý thời gian Các hàm về số học 14/08/2021 Lập trình Web 302
  303. Các hàm trong phát biểu Group by Hàm AVG: trả về giá trị bình quân của cột hay trường trong câu truy vấn Hàm MIN: trả về giá trị nhỏ nhất của cột hay trường trong câu truy vấn Hàm MAX: trả về giá trị lớn nhất của cột hay trường trong câu truy vấn Hàm SUM: trả về tổng các giá trị của cột hay trường trong câu truy vấn Ví dụ: SELECT Masv, Hoten, Sum(Tongdiem), Min(Tongdiem), Max(Tongdiem), Avg(Tongdiem) FROM Sinhvien 14/08/2021 Lập trình Web 303
  304. Các hàm xử lý chuỗi Hàm ASCII: trả về mã ASCII của ký tự bên trái của chuỗi Hàm Char(number): chuyển đổi từ số nguyên sang dạng chuỗi Hàm Upper(string): chuyển chuỗi sang chữ hoa Hàm Lower(string): chuyển chuỗi sang chữ thường Hàm Len(string): trả về chiều dài của chuỗi Hàm Ltrim(string): loại bỏ khoảng trắng bên trái của chuỗi Hàm Rtrim(string): loại bỏ khoảng trắng bên trái của chuỗi Hàm left(string, n): trả về chuỗi bên trái tính từ đầu đến vị trí n Hàm right(string, n): trả về chuỗi bên phải tính từ cuối đến vị trị n Hàm instr(chuoi 1, chuoi 2): trả về vị trí chuỗi bắt đầu của chuỗi 1 trong chuỗi 2 14/08/2021 Lập trình Web 304
  305. Các hàm về xử lý thời gian Hàm CurDate(): trả về ngày, tháng, năm hiện hành của hệ thống Hàm CurTime(): trả về giờ, phút, giây hiện hành của hệ thống Hàm Period_Diff(ngày đầu, ngày cuối): trả về số ngày trong khoảng thời gian giữa ngày đầu và ngày cuối Hàm dayofmonth: trả về ngày thứ mấy trong tháng 14/08/2021 Lập trình Web 305
  306. Các hàm về số học Hàm sqrt: trả về căn bậc hai Hàm round: làm tròn giá trị biểu thức 14/08/2021 Lập trình Web 306
  307. Các hàm về số học 14/08/2021 Lập trình Web 307
  308. Các hàm về số học 14/08/2021 Lập trình Web 308
  309. CHƯƠNG 7: KẾT NỐI CSDL MySQL TRONG PHP 7.1 THIẾT LẬP KẾT NỐI CSDL 7.2 THÊM THÔNG TIN VÀO CSDL 7.3 KÍCH HOẠT DỮ LIỆU 14/08/2021 Lập trình Web 309
  310. 7.1 THIẾT LẬP KẾT NỐI CSDL Mở và đóng kết nối Mở csdl Chọn csdl Truy vấn csdl Làm việc với các mẫu tin 14/08/2021 Lập trình Web 310
  311. Mở và đóng kết nối Cú pháp: Mở kết nối csdl $bien_con=mysql_connect("servername", "username", "password") if (!$bien_con) { echo "Kết nối không thành công"; exit;} Hoặc $bien_con=mysql_connect("servername", "username", "password") or die("Kết nối không thành công"); 14/08/2021 Lập trình Web 311
  312. Mở và đóng kết nối Cú pháp: Đóng kết nối csdl Mysql_close($bien_con); 14/08/2021 Lập trình Web 312
  313. Mở csdl Cú pháp: mysql_select_db("Database name") or die("Không mở được csdl"); Hoặc mysql_select_db("Database name", $bien_con) or die("Không mở được csdl"); 14/08/2021 Lập trình Web 313
  314. Mở csdl Ví dụ: 14/08/2021 Lập trình Web 314
  315. Chọn csdl Sau khi mở csdl, ta có thể thay đổi csdl theo cú pháp: use Database name; 14/08/2021 Lập trình Web 315
  316. Truy vấn csdl Để truy vấn đến csdl ta có thể sử dụng 1 trong 3 cú pháp sau: $sql="câu lệnh sql"; 1. $kq=mysql_query($sql); 2. $kq=mysql_query($sql,[$bien_conn]); 3. $kq=mysql_query(database_select, $sql, [$bien_conn]); Kết quả trả về: là true hoặc false tương ứng với thành công hoặc thất bại. Cho phép truy vấn csdl. 14/08/2021 Lập trình Web 316
  317. Truy vấn csdl Ví dụ: 14/08/2021 Lập trình Web 317
  318. Làm việc với các mẫu tin Lấy số lượng bản ghi khi truy vấn bảng dữ liệu theo cú pháp sau: $sl=mysql_num_rows($kq); if(!$sl) echo"không tìm thấy bản ghi nào"; else echo"số bản ghi thỏa mãn đk".$sl; 14/08/2021 Lập trình Web 318
  319. Làm việc với các mẫu tin Để lấy từng bản ghi từ kết quả $kq trả về ta sử dụng hàm mysql_fetch_array() hoặc mysql_fetch_assoc(): while($row=mysql_fetch_array($kq)) { $gtri1=$row["cột 1"]; $gtri2=$row["cột 2"]; } 14/08/2021 Lập trình Web 319
  320. Làm việc với các mẫu tin Ngoài các hàm trên, ta có thể tạo, xóa csdl hoặc table từ trang php thông qua các hàm mysql_creat_db(database name, [$bien_con]); mysql_drop_db(database name, [$bien_con]); drop table table name; 14/08/2021 Lập trình Web 320
  321. 7.2 THÊM THÔNG TIN VÀO CSDL Đăng ký người dùng Xác nhận thông tin Lưu thông tin 14/08/2021 Lập trình Web 321
  322. 7.2 THÊM THÔNG TIN VÀO CSDL Ví dụ: Đăng ký người dùng vào bảng users từ form đăng ký được tiến hành qua các bước: - Form đăng ký yêu cầu người dùng nhập thông tin - Người dùng nhập thông tin và chấp nhận đăng ký. - Hệ thống kiểm tra tính hợp lệ của các trường nhập vào. Kết nối csdl để kiểm tra email đã tồn tại hay chưa? - Nếu email đã tồn tại, yêu cầu về trang trước - Nếu chưa tồn tại, thì cho phép về trang trước hay qua trang xác nhận thông tin. 14/08/2021 Lập trình Web 322
  323. 7.2 THÊM THÔNG TIN VÀO CSDL - ở trang xác nhận thông tin, người dùng có thể về trang trước để chỉnh sửa hoặc chọn lưu thông tin. - Khi người dùng chọn lưu thông tin thì thông tin người dùng đã đăng ký sẽ được lưu vào csdl và thông báo đăng ký thành công. 14/08/2021 Lập trình Web 323
  324. Đăng ký người dùng Tạo bảng người dùng gồm các trường cần thiết Tạo trang đăng ký chứa form nhập thông tin với các phần tử tương ứng với các trường. Xây dựng các hàm kiểm tra tính hợp lệ của dữ liệu nhập vào. 14/08/2021 Lập trình Web 324
  325. Xác nhận thông tin Kết nối csdl để kiểm tra email đã tồn tại hay chưa? Nếu chưa thì hiển thị toàn bộ thông tin người dùng vừa nhập để đăng ký. Trong trường hợp không chỉnh sửa gì thêm thì chọn lưu thông tin. 14/08/2021 Lập trình Web 325
  326. Lưu thông tin vào csdl Mở kết nối csdl. Lưu các thông tin lấy từ các phần tử form tương ứng vào các trường trong csdl. Thông báo đăng ký thành công cho người dùng. 14/08/2021 Lập trình Web 326
  327. 7.3 KÍCH HOẠT DỮ LỆU Xem dữ liệu Cập nhật dữ liệu Xóa dữ liệu 14/08/2021 Lập trình Web 327
  328. Xem dữ liệu Sau khi đăng ký thành công. Người dùng có thể đăng nhập vào hệ thống bằng user và pass đã đăng ký. Người dùng có thể xem select. 14/08/2021 Lập trình Web 328
  329. Cập nhật dữ liệu Thông qua câu lệnh update người dùng có thể xem hiệu chỉnh và lưu dữ liệu. 14/08/2021 Lập trình Web 329
  330. Xóa dữ liệu Để xóa dữ liệu, người dùng cần lựa lọc ra các thông tin phụ thuộc vào điều kiện nào đó. Sau đó chọn bản ghi cần xóa hoặc xóa tất cả. Cần thao tác với checkbox và radio khi thiết kế form xóa bản ghi. 14/08/2021 Lập trình Web 330