Phần 1 của giáo trình Phát triển ứng dụng web cung cấp cho học viên những nội dung về: giới thiệu cơ bản website động; cách làm việc của PHP; download và cài đặt WAMP; ngôn ngữ lập trình PHP; cơ sở dữ liệu MySQL;... Mời các bạn cùng tham khảo!
BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP QUẢNG NINH TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP QUẢNG NINH KHOA CÔNG NGHỆ THÔNG TIN BỘ MÔN MẠNG & CÔNG NGHỆ PHẦN MỀM GIÁO TRÌNH PHÁT TRIỂN ỨNG DỤNG WEB DÙNG CHO TRÌNH ĐỘ ĐẠI HỌC BÀI GIẢNG PHÁT TRIỂN ỨNG DỤNG WEB QUẢNG NINH - 2019 MỤC LỤC CHƯƠNG 1: MỞ ĐẦU 1.1 Giới thiệu 1.2 Website động gì? 1.3 PHP gì? 1.4 Tại cần dùng PHP? 1.5 Cách làm việc PHP 1.6 MySQL gì? 1.7 Bạn cần để xây dựng Website viết PHP & MySQL 10 1.8 Ứng dụng máy chủ Web Server WAMP làm môi trường để xây dựng Website viết PHP & MySQL 10 1.8.1 WAMP gì? 10 1.8.2 Các đặc điểm trội WAMP 11 1.8.3 Download cài đặt WAMP 11 1.8.4 Các bước cài đặt WAMP 11 1.8.5 Hoàn tất việc cài đặt chạy thử 15 Câu hỏi ôn tập chương 18 CHƯƠNG 2: NGƠN NGỮ LẬP TRÌNH PHP 19 2.1 Nhúng PHP vào trang HTML 19 2.1.1 Nhúng mã PHP HTML 19 2.1.2 Ghi PHP 21 2.2 Khái niệm cú pháp PHP 21 2.3 Biến gì? 21 2.3.1 Khái niệm cú pháp khai báo 22 2.3.2 Tầm hoạt động biến 23 2.3.3 Các biến định nghĩa trước 24 2.3.4 Chuyển đổi kiểu liệu biến 24 2.4 Các kiểu liệu PHP 25 2.4.1 Kiểu boolean 25 2.4.2 Kiểu integer 26 2.4.3 Kiểu số thực (floats, doubles hay real numbers) 26 2.4.4 Kiểu string 27 2.4.5 Kiểu mảng 31 2.4.6 Kiểu object 33 2.4.7 Kiểu resource 34 2.4.8 Kiểu NULL 34 2.5 Hằng PHP 34 2.6 Toán tử PHP 35 2.6.1 Phép gán (assignment) 35 2.6.2 Các phép toán số học 36 2.6.3 Các phép toán chuỗi 36 2.6.4 Phép toán gán kết hợp 37 2.6.5 Tham chiếu 37 2.6.6 Phép toán so sánh 38 2.7 Kiểu Date-Time 39 2.8 Cấu trúc điều khiển PHP 41 2.8.1 Cấu trúc if…elseif…else 41 2.8.2 Cấu trúc switch 43 2.8.3 Vòng lặp for 45 2.8.4 Vòng lặp while 46 2.8.5 Vòng lặp do…while 47 2.8.6 Thoát khỏi cấu trúc điều khiển 48 2.9 Hàm 49 2.10 Tương tác với Server Form 53 2.10.1 Tạo Form 53 2.10.2 Lấy liệu từ form click nút submit với phương thức post 54 2.10.3 Lấy liệu từ form click nút submit với phương thức get 57 2.11 Đối tượng session cookie 61 2.11.1 Đối tượng session 61 2.11.2 Đối tượng cookie 68 2.12 Tận dụng mã nguồn có sẵn cách include file 69 2.13 Một số ví dụ minh họa 70 Câu hỏi ôn tập chương 79 CHƯƠNG 3: CƠ SỞ DỮ LIỆU MySQL 84 3.1 Giới thiệu sở liệu MySQL 84 3.2 Kiểu liệu MySQL 84 3.2.1 Kiểu liệu Numeric 84 3.2.2 Kiểu liệu Date and Time 84 3.2.3 Kiểu liệu String 85 3.3 Các phát biểu SQL 86 3.4 Sử dụng phpMyAdmin để quản trị MySQL 86 3.4.1 Tổng quan phpMyAdmin 86 3.4.2 Cài đặt phpMyAdmin 87 3.4.3 Khởi động phpMyAdmin 87 3.4.4 Phân quyền nhóm người sử dụng 88 3.4.5 Làm việc với Cơ sở liệu 88 3.4.6 Làm việc với bảng (Table) 92 Câu hỏi ôn tập chương 94 CHƯƠNG 4: KẾT HỢP PHP VÀ MySQL 96 4.1 Kết nối sở liệu 96 4.2 Truy vấn hiển thị liệu bảng 96 4.2.1 Hiển thị dạng lưới (table) 96 4.2.2 Hiển thị dạng lưới định dạng 99 4.2.3 Hiển thị dạng lưới có phân trang 102 4.2.4 Hiển thị dạng list đơn giản 107 4.2.5 Hiển thị list dạng cột 109 4.2.6 Hiển thị list dạng cột có link 111 4.2.7 Hiển thị list chi tiết có phân trang 115 4.3 Tìm kiếm liệu 120 4.3.1 Tìm kiếm đơn giản 120 4.3.2 Tìm kiếm nâng cao 123 4.4 Thêm liệu 127 4.5 Cập nhật xóa liệu 132 4.6 Một số ví dụ minh họa 141 Câu hỏi ôn tập chương 178 CHƯƠNG 5: HỆ QUẢN TRỊ NỘI DUNG MÃ NGUỒN MỞ JOOMLA 179 5.1 Tổng quan hệ quản trị nội dung mã nguồn mở (CMS) 179 5.2 Giới thiệu Joomla 179 5.2.1 Khái niệm Joomla 179 5.2.2 Vài nét lịch sử phát triển Joomla 179 5.2.3 Các dòng phiên Joomla 180 5.2.4 Kiến trúc Joomla 180 5.2.5 Đối với người sử dụng cuối 180 5.2.6 Ứng dụng Joomla 180 5.3 Một số khái niệm Joomla 181 5.3.1 Front-end Back-end 181 5.3.2 Các thành phần mở rộng (Extension) 181 5.3.3 Quản lý nội dung Site 183 5.3.4 Template 184 5.4 Cài đặt Joomla 185 5.4.1 Các bước cài đặt 185 5.4.2 Mở ứng dụng Website trình duyệt 190 5.4.3 Đăng nhập vào trang quản trị ứng dụng Website 191 5.5 Quản trị Joomla 192 5.5.1 Cấu hình tổng thể (Global Configuration) 192 5.5.2 Quản lý người dùng 196 5.5.3 Việt hóa Joomla cách cài đặt gói ngơn ngữ tiếng Việt 197 5.5.4 Thay đổi Template cho Website 201 5.5.5 Tạo nội dung cho Website (Section, Category, Content Item) 204 5.5.6 Cài đặt Component, Module, Plugin 210 5.5.7 Một số thao tác với Main Menu 211 5.6 Bảo mật Joomla 217 5.6.1 Khái niệm bảo mật 217 5.6.2 Tại phải bảo mật? 218 5.6.3 Các phương pháp bảo mật 218 Câu hỏi ôn tập chương 220 PHỤ LỤC 221 TÀI LIỆU THAM KHẢO 222 LỜI NĨI ĐẦU Ngày nay, ứng dụng cơng nghệ thơng tin việc tin học hóa xem yếu tố mang tính định hoạt động phủ, tổ chức, cơng ty; đóng vai trị quan trọng, tạo bước đột phá mạnh mẽ Đối với phủ cơng ty việc xây dựng Website riêng ngày trở nên cấp thiết Thông qua Website này, thông tin họ công văn, thông báo, định phủ hay sản phẩm, dịch vụ công ty đến với người quan tâm, đến với khách hàng họ cách nhanh chóng kịp thời, tránh phiền hà mà phương thức giao tiếp truyền thống thường gặp phải Việc xây dựng trang Web để phục vụ cho nhu cầu riêng tổ chức, công ty chí cá nhân, ngày nay, khơng lấy làm xa lạ Với vài thao tác đơn giản, người trở thành chủ Website giới thiệu quan tâm: Website giới thiệu thân gia đình anh ta, Website trình bày sưu tập hình ảnh loại xe mà thích chẳng hạn Ngày nay, Website tĩnh với trang HTML đơn giản khơng cịn đáp ứng nhu cầu người dùng Các Website động kết hợp với sở liệu trở thành xu phát triển Web Nếu nội dung trang Web bạn ngày nhiều, bạn cần phải tạo Web động, bạn thử hình dung bạn có cửa hàng điện tử Web có 1.000 sản phẩm Bạn phải tạo 1.000 trang Web cho sản phẩm thứ thay đổi, bạn phải sửa đổi lại tất trang Đó việc khơng hứng thú tốn thời gian, bạn phải cần Web động, bạn việc tạo trang hiển thị, nội dung sản phẩm lưu trữ sở liệu, thông tin hiển thị tuỳ thuộc vào truy cập người truy cập Môn học Xây dựng ứng dụng Web với PHP & MySQL giới thiệu với bạn công nghệ phổ biến dùng để tạo Website động: Ngôn ngữ kịch PHP chương trình quản lý sở liệu MySQL Môn học giới thiệu Hệ quản trị nội dung mã nguồn mở Joomla giúp xây dựng Website nhanh chóng, dù web cá nhân Website ngân hàng, đại công ty, hệ thống bán hàng trực tuyến, hệ thống viễn thông, trường học online, Giáo trình “Xây dựng ứng dụng Web với PHP & MySQL” biên soạn nhằm phục vụ công tác đào tạo học tập trường Đại học Công nghiệp Quảng Ninh, tư liệu tham khảo tốt cho tất quan tâm đến Lập trình Web, đặc biệt sinh viên ngành Tốn-Tin, Tin học, Cơng nghệ Thơng tin Giáo trình bao gồm chương: Chương 1: Cung cấp khái niệm mở đầu lập trình Web Chương 2: Cung cấp kiến thức ngơn ngữ lập trình PHP Chương 3: Các kiến thức sở liệu MySQL Chương 4: Trình bày cách khai thác thơng tin: Hiển thị, thêm, xóa, cập nhật thơng tin sở liệu sử dụng PHP & MySQL Chương 5: Cung cấp kiến thức CMS Joomla để xây dựng ứng dụng Website Phụ lục danh sách từ viết tắt sử dụng giáo trình liên quan Sau chương có câu hỏi ôn tập nhằm giúp sinh viên nắm vững nội dung chương tự kiểm tra trình độ qua việc trả lời câu hỏi ơn tập chương Do trình độ thời gian có hạn, nên giáo trình khơng thể tránh khỏi khiếm khuyết Rất mong nhận ý kiến đóng góp q báu bạn đọc Nhân tơi xin trân trọng gửi lời cảm ơn tới Thầy, Cô giáo trường Đại học Công nghiệp Quảng Ninh nhiệt tình giúp đỡ tơi dành nhiều thời gian đọc kĩ có ý kiến sâu sắc thời gian xây dựng giáo trình Quảng Ninh, tháng 02 năm 2013 TÁC GIẢ CHƯƠNG 1: MỞ ĐẦU 1.1 Giới thiệu Một công việc chuyên gia thiết kế Web phải biết về: - Web Programming Language (ngôn ngữ lập trình Web) - Web Server (Máy phục vụ Web) - Database Server (máy phục vụ sở liệu) * Web Programming Language gì? Web Programming Language (ngơn ngữ lập trình Web): Ngơn ngữ viết theo phong cách lập trình (khác so với HTML-ngơn ngữ đánh dấu) để hỗ trợ tăng cường khả Web Cho phép điều khiển phần tử trang Web dễ dàng Chúng ta có số ngơn ngữ lập trình Web là: ASP, ASP.NET, PHP, JSP,… * Web Server gì? Web Server (Máy phục vụ Web): máy tính mà cài đặt phần mềm phục vụ Web, đơi người ta gọi phần mềm Web Server Tất Web Server hiểu chạy file: *.htm *.html, nhiên Web Server lại phục vụ số kiểu file chuyên biệt chẳng hạn IIS Microsoft dành cho *.asp, *.aspx, ; Apache dành cho *.php,… ; Sun Java System Web Server SUN dành cho *.jsp,… * Database gì? Database Server (máy phục vụ sở liệu): máy tính mà có cài đặt phần mềm Hệ quản trị sở liệu Chúng ta có số Hệ quản trị sở liệu như: SQL Server, MySQL, Oracle,… 1.2 Website động gì? Các Website động thực thể mạnh linh hoạt, thường thể dạng ứng dụng Website đơn Các ưu điểm Website động: - Đáp ứng nhiều tham số khác (ví dụ thời gian ngày phiên trình duyệt người dùng) - Thường có giao diện cho phép người quản trị quản lý nội dung site - Có “bộ nhớ”, cho phép người dùng đăng ký đăng nhập, thực thương mại điện tử trình tương tự - Dễ dàng trì, cập nhật phát triển Có nhiều cơng nghệ để tạo Website động Các công nghệ thường sử dụng ASP (Active Server Pages, sản phẩm Microsoft), JSP (Java Server Pages), ColdFusion PHP Website động không thiết phải phụ thuộc vào sở liệu, ngày phụ thuộc nhiều, đặc biệt ứng dụng sở liệu có sẵn MySQL… với chi phí thấp miễn phí 1.3 PHP gì? PHP chữ viết tắt “Personal Home Page” Rasmus Lerdorf tạo năm 1994, để theo dõi người dùng truy cập lý lịch trực tuyến ơng Vì tính hữu dụng, khả phát triển, PHP bắt đầu sử dụng môi trường chuyên nghiệp trở thành “PHP: Hypertext Preprocessor” Theo Website thức PHP địa www.php.net PHP “một ngơn ngữ kịch nhúng HTML” “PHP nhúng HTML” có nghĩa PHP đặt rải rác HTML, giúp cho việc phát triển Website động dễ dàng PHP ngôn ngữ kịch (scripting language) Khác với ngôn ngữ lập trình, PHP thiết kế để thực điều sau kiện xảy (ví dụ, người dùng gửi biểu mẫu chuyển tới URL) PHP công nghệ phía máy chủ (server-side) khơng phụ thuộc mơi trường (cross-platform) Cả hai yếu tố quan trọng Khái niệm cơng nghệ phía máy chủ nói đến việc thứ PHP xảy máy chủ (ngược với máy khách máy người dùng) Tính chất không phụ thuộc môi trường cho phép PHP chạy hầu hết hệ điều hành Windows, Unix (và nhiều biến thể nó), Macintosh,… Một điều quan trọng mã kịch PHP viết máy chủ làm việc bình thường máy chủ khác mà không cần chỉnh sửa chỉnh sửa 1.4 Tại cần dùng PHP? PHP sử dụng để phát triển Website động tốt, nhanh dễ dàng nghiên cứu giải pháp khác PHP có khả thực tích hợp chặt chẽ với hầu hết sở liệu có sẵn, tính bền vững, linh động khả phát triển không giới hạn Tất đặc tính miễn phí PHP mã nguồn mở PHP vừa dễ với người sử dụng vừa có khả làm thứ, đáp ứng yêu cầu lập trình viên chuyên nghiệp PHP sử dụng ngày nhiều bắt kịp ASP (vốn xem ngôn ngữ kịch phổ biến nay) PHP môđun thông dụng cho Apache (máy chủ Web phổ biến nhất) có mặt 12 triệu Website 1.5 Cách làm việc PHP Hình 1.1: Cách làm việc PHP phù hợp với môi trường khác-chủ người dùng yêu cầu trang Web Như giới thiệu, PHP ngôn ngữ máy chủ, mã lệnh PHP tập trung máy chủ để phục vụ trang Web theo yêu cầu người dùng thông qua trình duyệt Khi người dùng truy cập Website viết PHP, máy chủ đọc mã lệnh PHP xử lý chúng theo hướng dẫn mã hóa Trong ví dụ hình 1.1, mã lệnh PHP yêu cầu máy chủ gửi liệu thích hợp (mã lệnh HTML) đến trình duyệt Web Trình duyệt xem trang HTML tiêu chuẩn Hình 1.2: Quá trình xử lý yêu cầu trang HTML tĩnh Điều khác với site HTML tĩnh chỗ: Khi có yêu cầu, máy chủ đơn gửi liệu HTML đến trình duyệt Web khơng xảy biên dịch từ phía máy chủ (xem hình 1.2) Đối với người dùng cuối trình duyệt Web, trang home.htm home.php trông tương tự nhau, thực chất nội dung trang tạo theo cách khác 1.6 MySQL gì? MySQL (www.mysql.com) sở liệu phổ biến giới, số người cho sở liệu mã nguồn mở tốt Thật vậy, từ phiên bổ sung thêm vài đặc điểm MySQL trở thành đối thủ người khổng lồ đắt Oracle SQL Server Microsoft, giống PHP, MySQL có khả thực thi hồn hảo, linh động, đáng tin cậy, dễ nắm bắt chi phí miễn phí MySQL phát triển hỗ trợ công ty MySQL AB Thụy Điển Nó hệ thống quản trị sở liệu (DBMS) cho sở liệu quan hệ (vì vậy, MySQL RDBMS) Cơ sở liệu tập hợp liệu có liên quan với nhau, văn bản, số tập tin nhị phân lưu trữ có tổ chức DBMS Có nhiều loại sở liệu, từ tập tin đơn giản đến tập tin quan hệ hướng đối tượng Một sở liệu quan hệ sử dụng nhiều bảng để lưu trữ thông tin phần riêng biệt Trước 1970, sở liệu trơng giống bảng tính lớn, đơn giản lưu trữ thứ Các sở liệu quan hệ đòi hỏi phải tập trung suy nghĩ nhiều giai đoạn thiết kế lập trình, chúng có độ tin cậy tính tồn vẹn liệu tốt Ngoài ra, sở liệu quan hệ thực việc tìm kiếm cho phép nhiều người sử dụng lúc Với việc kết hợp sở liệu vào ứng dụng Web, nhiều liệu PHP sinh lấy từ MySQL Điều chuyển nội dung site từ trạng thái tĩnh (mã hóa cứng) sang trạng thái động độ linh hoạt chìa khóa cho website động Hình 1.3: Cách hoạt động phần lớn ứng dụng Web động sử dụng PHP MySQL MySQL ứng dụng mã nguồn mở giống PHP giống vài biến thể Unix… Nó dùng miễn phí sửa đổi (có thể tải mã nguồn) Tuy nhiên, có trường hợp phải trả phí quyền MySQL, đặc biệt bạn kiếm tiềm từ việc buôn bán kết hợp với sản phẩm MySQL Phần mềm MySQL có nhiều phần, có máy chủ MySQL (mysql để chạy quản lý sở liệu), máy khác MySQL (mysql cung cấp giao diện với máy chủ), tiện ích để trì dùng cho mục đích khác PHP ln ln hỗ trợ tốt cho MySQL điều cho phiên gần MySQL xử lý sở liệu lớn gần 60.000 bảng với tỷ mẩu tin, làm việc với bảng lớn đến triệu terabytes (từ phiên 3.23) số hệ điều hành Nói chung, thường làm việc với bảng có kích thước 4GB 1.7 Bạn cần để xây dựng Website viết PHP & MySQL Để xây dựng Website viết PHP & MySQL, bạn cần công cụ sau: - Một ứng dụng máy chủ Web (ví dụ: Apache, Xitami IIS) - PHP Script Language - MySQL Database - Chương trình quản lý giao diện đồ họa sở liệu MySQL là: phpMyAdmin - Trình duyệt Web (như Internet Explorer Microsoft, Navigator Netscape, Safari Apple, Mozilla, Opera,…) - Trình soạn thảo văn bản, ứng dụng WYSIWYG có hỗ trợ PHP (Dreamweaver Macromedia) IDE (Integrated Development Enviroment: mơi trường phát triển tích hợp) - Ứng dụng FTP dùng máy chủ xa Điều hấp dẫn việc phát triển Website động dùng PHP MySQL tất yêu cầu đáp ứng mà khơng tốn tiền, hệ điều hành sử dụng Apache, PHP MySQL mã nguồn mở, số trình duyệt Web ứng dụng thương mại nhiều trình soạn thảo văn tốt, có sẵn, miễn phí 1.8 Ứng dụng máy chủ Web Server WAMP làm môi trường để xây dựng Website viết PHP & MySQL 1.8.1 WAMP gì? Một khó khăn ban đầu người thiết kế Web cài đặt Web Server Đa phần cảm thấy chật vật việc cài đặt Apache (Web Server) + MySQL (Database Server) + PHP cấu hình cho chúng làm việc tốt với Tuy nhiên có giải pháp đơn giản tiện lợi, sử dụng gói cài đặt tích hợp gồm Apache + MySQL + PHP + PHPMyAdmin (một công cụ quản trị CSDL MySQL) Mọi việc cần làm download cài đặt tiến hành cài đặt bước theo dẫn Chúng ta có sản phẩm tiếng XAMPP WAMP Tuy nhiên với mục đích cài đặt localhost để chạy thử WAMP lựa chọn dễ dàng WAMP: Một gói phần mềm Web Server tất (All-in-One) gồm: Apache, MySQL, PHP, PHPMyAdmin chạy Windows 10 Câu hỏi ơn tập chương + Tính tổng số lẻ giới hạn từ “Số bắt đầu” đến “Số kết thúc” Bài 6: Thiết kế trang form Thay từ chuỗi (chuoi_thay_the.php): Yêu cầu thiết kế: - Form: + Đặt tên cho form + Thiết lập phương thức cho form post + Và hành động (action) form tên trang (chuoi_thay_the.php) - Điều khiển: + Sử dụng điều khiển: TextField, Button + TextField Kết quả: không cho phép nhập liệu chỉnh sửa - Nút lệnh “Thay thế”: Khi chọn thực hiện: + Thay từ gốc từ thay + Xuất chuỗi sau thay Bài 7: Thiết kế trang form Nhập tính tổng dãy số (tinh_day_so.php): Yêu cầu thiết kế: - Form: + Đặt tên cho form + Thiết lập phương thức cho form post + Và hành động (action) form tên trang (tinh_day_so.php) - Điều khiển: + Sử dụng điều khiển: TextField, Button + TextField Tổng dãy số: không cho phép nhập liệu chỉnh sửa - Nút lệnh “Tính”: Khi chọn thực hiện: + Tách chuỗi gán vào mảng + Tính tổng phần tử mảng xuất tổng TextField Tổng dãy số Bài 8: Thiết kế trang form Tìm kiếm (mang_tim_kiem.php): 81 Câu hỏi ôn tập chương Yêu cầu thiết kế: - Form: + Đặt tên cho form + Thiết lập phương thức cho form post + Và hành động (action) form tên trang (mang_tim_kiem.php) - Điều khiển: + Sử dụng điều khiển: TextField, Button + TextField Kết tìm kiếm: khơng cho phép nhập liệu chỉnh sửa - Nút lệnh “Tìm kiếm”: Khi chọn thực hiện: + Tách chuỗi gán vào mảng + Xây dựng hàm tìm kiếm + Gọi sử dụng hàm viết + Đối với việc tìm kiếm: Nếu tìm thấy xuất “Tìm thấy…tại vị trí… mảng”, ngược lại xuất “Khơng tìm thấy…trong mảng” Bài 9: Tạo trang php “tao_session.php” “doc_session.php”: Trang “tao_session.php” Trang “doc_session.php”, kết qủa sau nhấn vào liên kết Click here! Của trang “tao_session.php” Yêu cầu thiết kế: - Form: + Đặt tên cho form + Thiết lập phương thức cho form post + Và hành động (action) form tên trang 82 Câu hỏi ôn tập chương - Điều khiển: + Sử dụng điều khiển: TextField, Button - Nút lệnh “Đăng nhập”: Khi chọn, thực tính: + Lấy giá trị TextField sau gán cho biến session, sau hiển thị hình + Khi người dùng chọn link chuyển sang trang “doc_session.php” + Ở trang “doc_session.php” yêu cầu đọc biến session có trang “tao_session.php” hiển thị hình + Khi người dùng chọn link quay trở trang “tao_session.php” Bài 10: Tạo trang php “tao_cookie.php” “doc_cookie.php”: Trang “tao_cookie.php” Trang “doc_cookie.php”, kết qủa sau nhấn vào liên kết Click here! Của trang “tao_cookie.php” Yêu cầu thiết kế: - Form: + Đặt tên cho form + Thiết lập phương thức cho form post + Và hành động (action) form tên trang - Điều khiển: + Sử dụng điều khiển: TextField, Button - Nút lệnh “Xác nhận”: Khi chọn, thực tính: + Lấy giá trị TextField sau gán cho biến cookie, sau hiển thị hình + Khi người dùng chọn link chuyển sang trang “doc_cookie.php” + Ở trang “doc_cookie.php” yêu cầu đọc biến cookie có trang “tao_cookie.php” hiển thị hình + Khi người dùng chọn link quay trở trang “tao_cookie.php” 83 Chương 3: Cơ sở liệu MySQL CHƯƠNG 3: CƠ SỞ DỮ LIỆU MySQL 3.1 Giới thiệu sở liệu MySQL MySQL sở liệu sử dụng cho ứng dụng Web có quy mô vừa nhỏ Tuy sở liệu lớn chúng có trình giao diện Windows hay Linux, cho phép người dùng thao tác hành động liên quan đến sở liệu Đặt điểm bật MySQL tốc độ nhanh, dễ sử dụng, chạy nhiều hệ điều hành miễn phí Cũng giống sở liệu, làm việc với sở liệu MySQL, bạn đăng ký kết nối, tạo sở liệu, quản lý người dùng, phân quyền sử dụng, thiết kế đối tượng Table sở liệu xử lý liệu Tuy nhiên, ứng dụng sở liệu vậy, thân chúng có hỗ trợ trình giao diện đồ hoạ, bạn sử dụng chúng tiện lợi sử dụng Command line Bởi vì, cho dù bạn điều khiển MySQL hình thức nào, mục đích quản lý thao tác sở liệu 3.2 Kiểu liệu MySQL Trước thiết kế sở liệu MySQL, bạn cần phải tham khảo số kiểu liệu thường dùng, chúng bao gồm nhóm như: numeric, date and time string Đều cần lưu ý thiết kế sở liệu, bạn cần phải xem xét kiểu liệu cho cột Table cho phù hợp với liệu giới thực Điều có nghĩa chọn liệu cho cột Table, bạn phải xem xét đến loại liệu cần lưu trữ thuộc nhóm kiểu liệu nào, chiều dài ràng buộc khác, nhằm khai báo cho phù hợp 3.2.1 Kiểu liệu Numeric Kiểu liệu Numeric bao gồm kiểu số nguyên kiểu số chấm động (bao nhiêu phần tử sau dấu phẩy) Kiểu liệu số nguyên Loại Tinyint Smallint Phạm vi giá trị -127->128 hay 255 -32768->32767 hay 65535 -8388608->8388607 hay Mediumint 16777215 Int 211->231-1 hay 232-1 BigInt -263->263-1 hay 264-1 Bytes Diễn giải Số nguyên nhỏ Số nguyên nhỏ Số nguyên vừa Số nguyên Số nguyên lớn Kiểu liệu số chấm động Loại Bytes Float Double[length,decimal] Diễn giải Số thập phân nhỏ Số thập phân lớn 3.2.2 Kiểu liệu Date and Time 84 Chương 3: Cơ sở liệu MySQL Kiểu liệu cho phép nhập liệu dạng ngày tháng Loại Date Time Datetime timeStamp Bytes 3 Diễn giải yyyy-mm-dd hh:mm:ss yyyy-mm-dd hh:mm:ss yyyy-mm-dd hh:mm:ss 3.2.3 Kiểu liệu String Kiểu liệu String chia làm ba loại: - Loại thứ char (chiều dài cố định) varchar (chiều dài biến thiên) + Char cho phép bạn nhập liệu dạng chuỗi với chiếu dài lớn chiều dài bạn định nghĩa, truy cập liệu Field có khai báo dạng này, bạn cần phải xử lý khoảng trắng Điều có nghĩa khai báo chiều dài 10, bạn nhập chuỗi ký tự, MySQL lưu trữ chuỗi nhớ với chiều dài 10 + Ngược lại với kiểu liệu Char Varchar, chiều dài lớn người dùng nhập vào chiều dài bạn định nghĩa cho Field này, nhớ lưu trữ chiều dài với chiều dài chuỗi bạn nhập Như vậy, có nghĩa bạn khai báo kiểu varchar 10 ký tự, bạn nhập ký tự, MySQL lưu trữ chiều dài ký tự, ra, bạn truy cập đến Field có kiểu liệu này, bạn khơng cần phải giải khoảng trắng - Loại thứ hai Text hay Blob, Text cho phép lưu chuỗi lớn, Blob cho phép lưu đối tượng nhị phân - Loại thứ Enum Set Bạn tham khảo ba loại bảng dưới: Loại Char Varchar Range 1-255 characters 1-255 characters tinyblob -1 tinytext -1 blob -1 text -1 8 16 16 Mediumblob 224-1 Mediumtext 224-1 32 Longblob -1 Longtext -1 32 Diễn giải Chiều dài chuỗi lớn 255 ký tự Chiều dài chuỗi lớn 255 ký tự Khai báo cho Field chứa kiểu đối tượng nhị phân cỡ 255 characters Khai báo cho Field chứa kiểu chuỗi cỡ 255 characters Khai báo cho Field chứa kiểu blob cỡ 65,535 characters Khai báo cho Field chứa kiểu chuỗi dạng văn cở 65,535 characters Khai báo cho Field chứa kiểu blob vừa khoảng 16,777,215 characters Khai báo cho Field chứa kiểu chuỗi dạng văn vừa khoảng 16,777,215 characters Khai báo cho Field chứa kiểu blob lớn khoảng 4,294,967,295 characters Khai báo cho Field chứa kiểu chuỗi dạng văn lớn khoảng 4,294,967,295 characters 85 Chương 3: Cơ sở liệu MySQL 3.3 Các phát biểu SQL SQL viết tắt Structured Query Language-Ngôn ngữ truy vấn cấu trúc SQL chuẩn ANSI (American National Standards Institute-Viện tiêu chuẩn Quốc gia Hoa Kỳ) truy xuất hệ thống sở liệu (CSDL) Các câu lệnh SQL sử dụng để truy xuất cập nhật liệu CSDL SQL hoạt động với hầu hết chương trình CSDL như: MS Access, DB2, Informix, MS SQL Server, Oracle, MySQL,… SQL chia làm loại sau: - SQL ngơn ngữ định nghĩa liệu (DDL-Data Definition Language) Phần DDL SQL cho phép tạo xóa bảng Chúng ta định nghĩa khóa (key), mục (index), định liên kết bảng thiết lập quan hệ ràng buộc bảng CSDL Các lệnh DDL quan trọng SQL là: Create Table: tạo bảng Alter Table: thay đổi cấu trúc bảng Drop Table: xóa bảng Create Index: tạo mục (khóa để tìm kiếm-search key) Drop Index: xóa mục tạo - SQL ngôn ngữ thao tác liệu (DML-Data Manipulation Language) SQL cú pháp để thực thi câu truy vấn SQL bao gồm cú pháp để cập nhật-sửa đổi, chèn thêm xóa mẩu tin Sau danh sách lệnh truy vấn dạng DML SQL: Select: lấy liệu từ bảng CSDL Update: cập nhật/sửa đổi liệu bảng Delete: xóa liệu bảng Insert Into: thêm liệu vào bảng 3.4 Sử dụng phpMyAdmin để quản trị MySQL 3.4.1 Tổng quan phpMyAdmin Các chức phpMyAdmin phpMyAdmin giao diện Web cho phép quản lý toàn MySQL Server - Xem liệu, xóa CSDL, bảng, view, trường số - Tạo, chép, xóa, đổi tên thay đổi CSDL, bảng, trường số - Bảo trì Server, CSDL, bảng - Tạo đọc nhiều bảng - Xuất liệu nhiều kiểu định dạng CSV, XML, PDF, Open text, Word, Excel - Quản lý người dùng đặc quyền Bảo mật phpMyAdmin phpMyAdmin khơng có chế độ bảo vệ cho MySQL Server bạn, cơng cụ quản trị MySQL Server, sử dụng tồn người sử dụng 86 Chương 3: Cơ sở liệu MySQL MySQL cho nó, dùng chức Privileges để phân quyền cho người sử dụng, quản trị người dùng thêm người sử dụng 3.4.2 Cài đặt phpMyAdmin Để cài đặt phpMyAdmin, chạy chương trình cài đặt server WAMP “WAMP5 1.7.2.exe” Chương trình cài đặt phpMyAdmin với thành phần sau: Apache, PHP MySQL (xem hướng dẫn cài đặt mục 1.8.4 Chương 1) 3.4.3 Khởi động phpMyAdmin Để khởi động PHPMyAdmin, address trình duyệt, gõ vào địa sau: http://localhost/phpmyadmin/ Giao diện hình phpMyAdmin: Hình 3.1: Màn hình làm việc phpMyAdmin Với hình cho ta biết thông tin: - phpMyAdmin dùng: 2.10.1 - Đang quản trị Server là: localhost - Ngôn ngữ PHP với extension: MySQL - Ngôn ngữ hiển thị: Tiếng anh (English) - Về cỡ chữ, phông, nền: Sử dụng kiểu chuẩn (Original) - Với MySQL phiên 5.0.37 - Kiểu kết nối với Server là: TCP/IP - Người sử dụng là: Root 87 Chương 3: Cơ sở liệu MySQL - Kiểu mã hóa ký tự MySQL Server: UTF-8 Unicode 3.4.4 Phân quyền nhóm người sử dụng - Khi mở cửa sổ phpMyAdmin cửa sổ ra, toàn phần cấp quyền sử dụng cho sở liệu nằm phần privileges - Click privileges, user xếp gộp theo nhóm tên đầu người sử dụng - Bạn cấp quyền cho sở liệu với bảng người sử dụng khác Chi tiết quyền người dùng: Loại quyền Các quyền truy vấn liệu, truy vấn trực tiếp với ghi Các lệnh làm việc cấu trúc, trực tiếp với bảng Các lệnh quản trị, cấp quyền người dùng, tạo người dùng Các quyền Select Update Insert Delete File Create Alter Index Drop Create temporaty table Create view Show view Create routine Alter routine Excute Grant Super Process Reload Shutdown Show databases Lock tables Reference Create user Ý nghĩa Chọn liệu, tìm kiếm Cập nhật liệu Chèn thêm liệu Xóa liệu Làm việc với file Tạo bảng Thay đổi bảng Tạo số Xóa bảng Tạo bảng tạm Tạo view Xóa view Tạo routine Thay đổi routine Thực lệnh Cấp quyền người dùng Quyền quản trị Xử lý Mở lại Tắt server Hiện tất CSDL Khóa bảng Tham chiếu Tạo người dùng 3.4.5 Làm việc với Cơ sở liệu - Để làm việc với sở liệu trước tiên user phải có quyền sở liệu - phpMyAdmin tạo, xóa sở liệu, nhập xuất sở liệu, phân quyền cho sở liệu a) Tạo sở liệu Để tạo sở liệu, mở phpMyAdmin, sau việc gõ tên sở liệu vào ô Create new database, sau ấn nút Create sau: 88 Chương 3: Cơ sở liệu MySQL Hình 3.2: Gõ tên CSDL cần tạo vào Create new databases b) Xóa sở liệu Để xóa sở liệu, bạn chọn mục Databases, chọn sở liệu cần xóa, sau click vào lựa chọn: With selected: , chọn Yes Hình 3.3: Màn hình xóa sở liệu c) Thay đổi thuộc tính sở liệu Để thay đổi thuộc tính sở liệu, bạn chọn sở liệu cần thay đổi, sau chọn thẻ Operations, xuất bảng hình dưới: 89 Chương 3: Cơ sở liệu MySQL Hình 3.4: Màn hình thay đổi thuộc tính CSDL chọn Trong bảng này, đổi tên sở liệu, chép sở liệu sang CSDL d) Xuất sở liệu file (lệnh Export) - Để Export sở liệu, bạn chọn mục “Export” cửa sổ phpMyAdmin, xuất bảng dưới: Hình 3.5: Màn hình Export sở liệu file - Trong bảng này, bạn chọn sở liệu cần Export, chọn định dạng xuất (thường chọn định dạng sql), đánh dấu kiểm vào mục Save as file để chọn nơi lưu file cần xuất ra, gõ vào tên file cần lưu file name template, sau ấn nút Go 90 Chương 3: Cơ sở liệu MySQL e) Nhập sở liệu từ file (lệnh Import) - Để Import sở liệu, bạn chọn mục “Import” cửa sổ phpMyAdmin, xuất bảng dưới: Hình 3.6: Màn hình Import sở liệu từ file - Trong bảng này, đường dẫn tới file cần Import nhấn nút Browse để duyệt tới file cần Import, sau nhấn vào nút Go để Import f) Gõ vào lệnh SQL để thao tác với sở liệu - Chọn liệu liệu cần thao tác - Chọn thẻ SQL: Hình 3.7: Màn hình gõ lệnh SQL để thao tác với CSDL Cú pháp lệnh CREATE DATABASE tên_CSDL_mới ALTER DATABASE tên_CSDL CHARACTER SET charset_name COLLATE collation_name Ý nghĩa Tạo CSDL Thay đổi đặc tính kí tự CSDL, thay đổi đối chiếu 91 Chương 3: Cơ sở liệu MySQL DROP DATABASE tên_CSDL Xóa CSDL 3.4.6 Làm việc với bảng (Table) Tạo bảng - Chọn sở liệu cần tạo bảng, mục Create new on databases, gõ vào hộp văn Name tên bảng cần tạo, sau gõ vào số trường bảng hộp văn Number of fields, click nút Go để tạo bảng: Hình 3.8: Màn hình tạo bảng - Sau click Go để tạo bảng, nên thơng tin để tạo bảng mới: Hình 3.9: Màn hình tạo trường cho bảng Ý nghĩa nhãn trường bảng: Nhãn Field Type Length value Ý nghĩa Tên trường Kiểu liệu Độ dài trường 92 Chương 3: Cơ sở liệu MySQL Collation Attributes Null Default Extra Primary key Index Unique Fulltext None Kiểu tham chiếu Các thuộc tính Cho phép rỗng hay không Giá trị mặc định Phần mở rộng (tự động tăng) Đặt làm khóa Đặt trường số Giá trị Phục vụ tìm kiếm toàn văn MySQL Bỏ qua - Các nút hành động bảng: + Browse: Hiển thị liệu + Structure: Thay đổi cấu trúc bảng + SQL: Thực câu truy vấn SQL bảng + Search: Tìm kiếm bảng ghi + Insert: Chèn thêm liệu vào bảng + Export: Xuất liệu + Import: Nhập liệu + Operations: Thực thao tác với bảng + Empty: Xóa tồn ghi bảng + Drop: Xóa bảng Tạo liên kết bảng Chọn sở liệu, chọn bảng, chọn mục Structure, chọn Relation view để tạo liên kết Hình 3.10: Màn hình tạo liên kết bảng 93 Câu hỏi ôn tập chương Câu hỏi ôn tập chương Bài 1: a) Sử dụng phpMyAdmin tạo sở liệu có tên “BookDB”, tạo bảng với trường sau: - Bảng “Sach” gồm trường: + sachID: kiểu số tự động (Đây trường khóa chính) + tensach: kiểu chuỗi + tacgia: kiểu chuỗi + nxb: kiểu chuỗi + namxb: kiểu số + giatien: kiểu số + chudeID: kiểu số - Bảng “Chude” gồm trường: + chudeID: kiểu số tự động (Đây trường khóa chính) + tenchude: kiểu chuỗi b) Nhập 20 ghi cho bảng “Sach” ghi cho bảng “Chude” c) Export toàn sở liệu “BookDB” file đặt tên “BookDB.sql” d) Import liệu sở liệu “BookDB” vào từ file liệu sql cung cấp sẵn có tên “BookDB.sql” Bài 2: a) Sử dụng phpMyAdmin tạo sở liệu có tên “QL_BAN_SUA”, tạo bảng với trường sau: - Bảng hãng sữa “HANG_SUA” gồm trường: Field Name Ma_hang_sua Field Type Field Size Description Varchar 20 Not null Ten_hang_sua Dia_chi Dien_thoai Email Varchar Varchar Varchar Varchar 100 200 20 100 Links to Not null - Bảng loại sữa “LOAI_SUA” gồm trường: Field Name Ma_loai_sua Field Type Field Size Description Varchar Not null Ten_loai Varchar 50 Links to Not null - Bảng sữa “SUA” gồm trường: Field Name Ma_sua Field Type Field Size Description Varchar Not null Ten_sua Ma_hang_sua Varchar Varchar 100 20 Not null Not null Ma_loai_sua Varchar Not null Links to HANG_SUA -> Ma_hang_sua LOAI_SUA -> 94 Câu hỏi ôn tập chương Ma_loai_sua Trong_luong Don_gia Tp_dinh_duong Loi_ich Hinh Int Int Text Text Varchar 200 - Bảng khách hàng “KHACH_HANG” gồm trường: Field Name Field Type Ma_khach_hang Varchar Field Size Description Not null Ten_khach_hang Phai Dia_chi Dien_thoai Email 100 200 20 100 Not null 1:Nữ; 0:Nam Varchar Tinyint(bool) Varchar Varchar Varchar Links to - Bảng hóa đơn “HOA_DON” gồm trường: So_hoa_don Field Type Varchar Ngay_HD Ma_khach_hang date Varchar Tri_gia Double Field Name Field Size Description Not null Not null Not null Links to KHACH_HANG -> Ma_khach_hang - Bảng chi tiết hóa đơn “CT_HOADON” gồm trường: So_hoa_don Field Type Varchar Not null Ma_sua Varchar Not null So_luong Don_gia Int Int Field Name Field Size Description Links to HOA_DON -> So_hoa_don SUA -> Ma_sua Đơn giá bán b) Nhập 10 ghi cho bảng c) Export toàn sở liệu “QL_BAN_SUA” file đặt tên “QL_BAN_SUA.sql” d) Import liệu sở liệu “QL_BAN_SUA” vào từ file liệu sql cung cấp sẵn có tên “QL_BAN_SUA.sql” 95 ... 1- 9 có kèm số Day (Mon-Sun) tuần với ký tự Tháng (January-December) năm với tên tháng đầy đủ dạng text Hour ( 1- 12) ngày số (không kèm từ 1- 9) Hour ( 0-2 3) ngày số (không kèm từ 0-9 ) Hour ( 0 1- 12)... (kèm từ 0 1- 09) Hour (0 0-2 3) ngày số (kèm 00 từ 0 0-0 9) Minutes ( 0 1- 59) trôi qua (kèm 00 phút từ 0 0-5 9) Day ( 1- 31) số (không kèm ngày từ 1- 9) Day (Monday-Sunday) tuần dạng text Năm nhuận trả 1, ngược... ngược lại hàm trả Month ( 0 1- 12) năm số (kèm 00 tháng từ 0 1- 09) Month (Jan-Dec) năm ký tự Month ( 1- 12) số (không kèm tháng từ 1- 9) Seconds ( 0 1- 59) trôi qua (kèm 00 giây từ 0 0-5 9) Thêm hai ký tự st,