MỤC LỤC LỜI NÓI ĐẦU 4 CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 5 1. PHP 5 1.2 Lịch sử phát triển của PHP 5 1.3 Cú pháp 8 1.4 Biến trong lập trình PHP 9 1.5 Hằng trong lập trình PHP 9 1.6 Toán tử trong PHP 10 1.7 Biểu thức trong PHP 10 1.7.1. Biểu thức điều kiện 10 1.7.2 Biểu thức switch ... case 10 1.7.3 Biểu thức vòng lặp 11 1.8 Thao tác làm việc trên Form trong PHP 11 1.8.1 Xử lý Form trong PHP 11 1.8.3 Tìm hiểu quy trình uplpoad file trong PHP 12 1.9 Tìm hiểu quy trình làm việc trên File và mảng 13 1.9.1 Tìm hiểu quy trình làm việc trên File 13 1.9.2 Tìm hiểu quy trình làm việc trên mảng 15 1.9.3 Các hàm bổ trợ cho mảng 15 1.10 Tìm hiểu hàm và gọi lại hàm trong PHP 15 1.10.1 Hàm do người dùng tự định nghĩa 15 1.10.2 Gọi lại hàm trong PHP 16 1.11 Quản lý phiên làm việc trong PHP 16 1.11.1 Phiên làm việc Cookie 16 1.11.2 Phiên làm việc Session 17 2. MySQL 17 2.1 MySQL là gì ? 17 2.2 Đặc điểm của MySQL 18 2.3 Những khái niệm cơ bản 18 2.4 Câu truy vấn cơ bản trong MySQL 19 2.5 Sử dụng PHP kết hợp MySQL 21 CHƯƠNG 2 : KHẢO SÁT, PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 23 1. Khảo sát hệ thống 23 2. Xác định yêu cầu hệ thống 23 2.1. Yêu cầu tổng quan 23 2.2 Yêu cầu chi tiết 24 2.3. Yêu cầu tính năng kỹ thuật 25 3. Phân tích hệ thống 25 3.1.Tác nhân hệ thống 25 3.2.Usecase tổng quan 26 3.4. Usecase cho từng chức năng cụ thể 26 3.5. Biểu đồ trình tự 29 3.6. Biểu đồ hoạt động 37 CHƯƠNG 3: XÂY DỰNG CHƯƠNG TRÌNH 44 3.1. Giới thiệu chương trình 44 3.1.1. Giao diện trang chủ 44 3.1.2. Giao diện trang đăng nhập quản trị 45 3.1.3. Giao diện quản lý thành viên quản trị. 45 3.1.4. Giao diện trang quản trị 46 3.1.5. Giao diện quản lý đơn hàng 46 3.1.6. Giao diện trang quản lý danh mục sản sản phẩm. 47 KẾT LUẬN 48 TÀI LIỆU THAM KHẢO 49 NHẬN XÉT CỦA GIÁO VIÊN 50 LỜI NÓI ĐẦU Với internet chúng ta đã thực hiện được nhiều công việc với tốc độ nhanh hơn và chi phí thấp hơn nhiều so với cách thức truyền thống. Chính điều này đã và đang thay đổi cuộc sống của mọi người từ học tập, việc làm, văn hóa đều có sự tác động mạnh mẽ của công nghệ thông tin và internet. Trước đây muốn tìm hiểu một vấn đề nào đó chúng ta sẽ phải dung các phương thức tuyền thống như đọc sách, báo, nghe đài, tivi hay nghe trực tiếp từ người khác còn ngày nay chúng ta có thêm một kênh thông tin mới các thông tin trên internet. Nhận thấy sức mạnh của internet và công nghệ thông tin trong việc tổ chức và quản lý công việc nên em đã lựa chọn đề tài “Xây dựng website đặt hàng online cho nhà hàng Hà Phương bằng php và mysql”. Nội dung của đề tài là xây dựng website đặt hàng online , giúp cho người quản lý dễ dàng quản lý và khách hàng dễ chọn lựa sản phẩm mình yêu thích. Đề tài bao gồm các nội dung: Cơ sở lý thuyết. Phân tích thiết kế Xây dựng website. Sau một thời gian học tập và nghiên cứu, em đã hoàn thành đề tài. Em xin chân thành cảm ơn cô : Lương Thị Minh Huế đã nhiệt tình hướng dẫn em hoàn thành tốt báo cáo thực tập chuyên ngành này. Mặc dù đã cố gắng hết sức để hoàn thiện đề tài với tất cả lỗ lực của bản thân nhưng với kinh nghiệm kiến thức còn hạn chế của em thì đề tài của em còn nhiều thiếu sót. Em mong nhận được sự quan tâm những ý kiến đóng góp của thầy, cô giáo để đề tài của em hoàn thiện hơn CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1. PHP PHP (viết tắt hồi quy PHP: Hypertext Preprocessor) là một ngôn ngữ lập trình kịch bản hay một loại mã lệnh chủ yếu được dùng để phát triển các ứng dụng viết cho máy chủ, mã nguồn mở, dùng cho mục đích tổng quát. Nó rất thích hợp với web và có thể dễ dàng nhúng vào trang HTML. Do được tối ưu hóa cho các ứng dụng web, tốc độ nhanh, nhỏ gọn, cú pháp giống C và Java, dễ học và thời gian xây dựng sản phẩm tương đối ngắn hơn so với các ngôn ngữ khác nên PHP đã nhanh chóng trở thành một ngôn ngữ lập trình web phổ biến nhất thế giới. 1.2 Lịch sử phát triển của PHP • PHPFI PHP được phát triển từ một sản phẩm có tên là PHPFI. PHPFI do Rasmus Lerdorf tạo ra năm 1995, ban đầu được xem như là một tập con đơn giản của các mã kịch bản Perl để theo dõi tình hình truy cập đến bản sơ yếu lý lịch của ông trên mạng. Ông đã đặt tên cho bộ mã kịch bản này là Personal Home Page Tools. Khi cần đến các chức năng rộng hơn, Rasmus đã viết ra một bộ thực thi bằng C lớn hơn để có thể truy vấn tới các cơ sở dữ liệu và giúp cho người sử dụng phát triển các ứng dụng web đơn giản. Rasmus đã quyết định công bố mã nguồn của PHPFI cho mọi người xem, sử dụng cũng như sửa các lỗi có trong nó đồng thời cải tiến mã nguồn. PHPFI, viết tắt từ Personal Home PageForms Interpreter, bao gồm một số các chức năng cơ bản cho PHP như ta đã biết đến chúng ngày nay. Nó có các biến kiểu như Perl, thông dịch tự động các biến của form và cú pháp HTML nhúng. Cú pháp này giống như của Perl, mặc dù hạn chế hơn nhiều, đơn giản và có phần thiếu nhất quán. Vào năm 1997, PHPFI 2.0, lần viết lại thứ hai của phiên bản C, đã thu hút được hàng ngàn người sử dụng trên toàn thế giới với xấp xỉ 50.000 tên miền đã được ghi nhận là có cài đặt nó, chiếm khoảng 1% số tên miền có trên mạng Internet. Tuy đã có tới hàng nghìn người tham gia đóng góp vào việc tu chỉnh mã nguồn của dự án này thì vào thời đó nó vẫn chủ yếu chỉ là dự án của một người. PHPFI 2.0 được chính thức công bố vào tháng 11 năm 1997, sau một thời gian khá dài chỉ được công bố dưới dạng các bản beta. Nhưng không lâu sau đó, nó đã được thay thế bởi các bản alpha đầu tiên của PHP 3.0. • PHP 3 PHP 3.0 là phiên bản đầu tiên cho chúng ta thấy một hình ảnh gần gũi với các phiên bản PHP mà chúng ta được biết ngày nay. Nó đã được Andi Gutmans và Zeev Suraski tạo ra năm 1997 sau khi viết lại hoàn toàn bộ mã nguồn trước đó. Lý do chính mà họ đã tạo ra phiên bản này là do họ nhận thấy PHPFI 2.0 hết sức yếu kém trong việc phát triển các ứng dụng thương mại điện tử mà họ đang xúc tiến trong một dự án của trường đại học. Trong một nỗ lực hợp tác và bắt đầu xây dựng dựa trên cơ sở User đã có của PHPFI, Andi, Rasmus và Zeev đã quyết định hợp tác và công bố PHP 3.0 như là phiên bản thế hệ kế tiếp của PHPFI 2.0, và chấm dứt phát triển PHPFI 2.0. Một trong những sức mạnh lớn nhất của PHP 3.0 là các tính năng mở rộng mạnh mẽ của nó. Ngoài khả năng cung cấp cho User cuối một cơ sở hạ tầng chặt chẽ dùng cho nhiều cơ sở dữ liệu, giao thức và API khác nhau, các tính năng mở rộng của PHP 3.0 đã thu hút rất nhiều nhà phát triển tham gia và đề xuất các mô đun mở rộng mới. Hoàn toàn có thể kết luận được rằng đây chính là điểm mấu chốt dẫn đến thành công vang dội của PHP 3.0. Các tính năng khác được giới thiệu trong PHP 3.0 gồm có hỗ trợ cú pháp hướng đối tượng và nhiều cú pháp ngôn ngữ nhất quán khác. Ngôn ngữ hoàn toàn mới đã được công bố dưới một cái tên mới, xóa bỏ mối liên hệ với việc sử dụng vào mục đích cá nhân hạn hẹp mà cái tên PHPFI 2.0 gợi nhắc. Nó đã được đặt tên ngắn gọn là PHP, một kiểu viết tắt hồi quy của PHP: Hypertext Preprocessor. Vào cuối năm 1998, PHP đã phát triển được con số cài đặt lên tới hàng chục ngàn người sử dụng và hàng chục ngàn Web site báo cáo là đã cài nó. Vào thời kì đỉnh cao, PHP 3.0 đã được cài đặt cho xấp xỉ 10% số máy chủ Web có trên mạng Internet. PHP 3.0 đã chính thức được công bố vào tháng 6 năm 1998, sau thời gian 9 tháng được cộng đồng kiểm nghiệm. • PHP 4 Vào mùa đông năm 1998, ngay sau khi PHP 3.0 chính thức được công bố, Andi Gutmans và Zeev Suraski đã bắt đầu bắt tay vào việc viết lại phần lõi của PHP. Mục đích thiết kế là nhằm cải tiến tốc độ xử lý các ứng dụng phức tạp, và cải tiến tính mô đun của cơ sở mã PHP. Những ứng dụng như vậy đã chạy được trên PHP 3.0 dựa trên các tính năng mới và sự hỗ trợ khá nhiều các cơ sở dữ liệu và API của bên thứ ba, nhưng PHP 3.0 đã không được thiết kế để xử lý các ứng dụng phức tạp như thế này một cách có hiệu quả. Một động cơ mới, có tên Zend Engine (ghép từ các chữ đầu trong tên của Zeev và Andi), đã đáp ứng được các nhu cầu thiết kế này một cách thành công, và lần đầu tiên được giới thiệu vào giữa năm 1999. PHP 4.0, dựa trên động cơ này, và đi kèm với hàng loạt các tính năng mới bổ sung, đã chính thức được công bố vào tháng 5 năm 2000, gần 2 năm sau khi bản PHP 3.0 ra đời. Ngoài tốc độ xử lý được cải thiện rất nhiều, PHP 4.0 đem đến các tính năng chủ yếu khác gồm có sự hỗ trợ nhiều máy chủ Web hơn, hỗ trợ phiên làm việc HTTP, tạo bộ đệm thông tin đầu ra, nhiều cách xử lý thông tin người sử dụng nhập vào bảo mật hơn và cung cấp một vài các cấu trúc ngôn ngữ mới. Với PHP 4, số nhà phát triển dùng PHP đã lên đến hàng trăm nghìn và hàng triệu site đã công bố cài đặt PHP, chiếm khoảng 20% số tên miền trên mạng Internet. Nhóm phát triển PHP cũng đã lên tới con số hàng nghìn người và nhiều nghìn người khác tham gia vào các dự án có liên quan đến PHP như PEAR, PECL và tài liệu kĩ thuật cho PHP. • PHP 5 Sự thành công hết sức to lớn của PHP 4.0 đã không làm cho nhóm phát triển PHP tự mãn. Cộng đồng PHP đã nhanh chóng giúp họ nhận ra những yếu kém của PHP 4 đặc biệt với khả năng hỗ trợ lập trình hướng đối tượng (OOP), xử lý XML, không hỗ trợ giao thức máy khách mới của MySQL 4.1 và 5.0, hỗ trợ dịch vụ web yếu. Những điểm này chính là mục đích để Zeev và Andi viết Zend Engine 2.0, lõi của PHP 5.0. Một thảo luận trên Slashdot đã cho thấy việc phát triển PHP 5.0 có thể đã bắt đầu vào thời điểm tháng 12 năm 2002 nhưng những bài phỏng vấn Zeev liên quan đến phiên bản này thì đã có mặt trên mạng Internet vào khoảng tháng 7 năm 2002. Ngày 29 tháng 6 năm 2003, PHP 5 Beta 1 đã chính thức được công bố để cộng đồng kiểm nghiệm. Đó cũng là phiên bản đầu tiên của Zend Engine 2.0. Phiên bản Beta 2 sau đó đã ra mắt vào tháng 10 năm 2003 với sự xuất hiện của hai tính năng rất được chờ đợi: Iterators, Reflection nhưng namespaces một tính năng gây tranh cãi khác đã bị loại khỏi mã nguồn. Ngày 21 tháng 12 năm 2003: PHP 5 Beta 3 đã được công bố để kiểm tra với việc phân phối kèm với Tidy, bỏ hỗ trợ Windows 95, khả năng gọi các hàm PHP bên trong XSLT, sửa chữa nhiều lỗi và thêm khá nhiều hàm mới. PHP 5 bản chính thức đã ra mắt ngày 13 tháng 7 năm 2004 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. Mặc dù coi đây là phiên bản sản xuất đầu tiên nhưng PHP 5.0 vẫn còn một số lỗi trong đó đáng kể là lỗi xác thực HTTP. Ngày 14 tháng 7 năm 2005, 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, một nỗ lực trong việc tạo ra một hệ thống API nhất quán trong việc truy cập cơ sở dữ liệu và thực hiện các câu truy vấn. Ngoài ra, trong PHP 5.1, các nhà phát triển PHP tiếp tục có những cải tiến trong nhân Zend Engine 2, nâng cấp mô đun PCRE lên bản PCRE 5.0 cùng những tính năng và cải tiến mới trong SOAP, streams và SPL. • PHP 6 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ỉ http:snaps.php.net. Phiên bản PHP 6 được kỳ vọng sẽ lấp đầy những khiếm khuyết của PHP ở phiên bản hiện tại, ví dụ: hỗ trợ namespace (hiện tại các nhà phát triển vẫn chưa công bố rõ ràng về vấn đề này); hỗ trợ Unicode; sử dụng PDO làm API chuẩn cho việc truy cập cơ sở dữ liệu, các API cũ sẽ bị đưa ra thành thư viện PECL... 1.3 Cú pháp Cách khai báo PHP Cách Thẻ mở Thẻ đóng 1 2 3 4 Xuất giá trị PHP Cú pháp: Echo thongtin; Thông tin là chuỗi: Chuỗi ( text, HTML) Thông tin là biến. Thông tin gồm chuỗi và biến.Dùng dấu . hoặc , để nỗi chuỗi và biến hoặc chuỗi và chuỗi. Chú thích PHP: Nội dung chú thích Nội dung chú thích Các kiểu dữ liệu cơ sở Kiểu Boolean: chỉ có một trong hai giá trị TRUE và FALSE Kiểu Interger (số nguyên): Giá trị có thể là số trong hệ thập phân, thập lục phân, bát phân Kiểu FloatDouble (số thực) Kiểu String (chuỗi, ký tự) • Mỗi ký tự chiếm 1 byte • Mỗi chuỗi có thể chứa một hay nhiều ký tự thuộc 256 ký tự khác nhau • Chuỗi không có giới hạn về kích thước Kiểu Array (mảng các phần tử): Kiểu Object (đối tượng) Chuyển đổi kiểu dữ liệu • Trong quá trình tính toán, kiểu dữ liệu có thể không con phù hợp nữa (kết quả tính toán vượt khỏi phạm vi của dữ liệu cũ) chuyển đổi kiểu dữ liệu • Thực hiện: ghi tên kiểu dữ liệu mà biến muốn chuyển đổi vào phía trước biến 1.4 Biến trong lập trình PHP Khởi tạo biến: Biến là một giá trị có thể thay đổi được. Giá trị nào là giá trị gán sau cùng thì đó là giá trị của biến Biến nội suy là một biến nhận biết được trong chuỗi “” Nội suy biến và có thể chứa dấu ‘ ‘’ Không nội suy biến, có thể chứa dấu và dấu “ 1.5 Hằng trong lập trình PHP Hằng là giá trị không thay đổi trong quá trình thực hiện chương trình Cú pháp: Define(“TENHANG”,giá trị); Hằng không thể nội suy trong một chuỗi. 1.6 Toán tử trong PHP Đối với mọi ngôn ngữ lập trình, toán tử và biểu thức luôn là những kiến thức cơ bản được sử dụng để xử lý các thao tác trong giai đoạn lập trình. Toán tử gán: Toán tử gán khởi tạo 1 biến. Nó gồm ký tự đơn =. Toán tử gán lấy giá trị của toán hạng bên phải gán nó vào toán hạng bên trái. Toán tử số học: Là dạng phép tính giản đơn cộng, trừ, nhân, chia trong số học. Ngoài ra còn có phép chia lấy dư (%). Được sử dụng để lấy ra đơn vị dư của 1 phép toán. Toán tử so sánh: Là toán tử được sử dụng để thực hiện các phép toán so sánh giữa hai số hạng. Toán tử logic: Toán tử logic là các tổ hợp các giá trị boolean. Toán tử kết hợp: Khi tạo mã PHP, chúng ta sẽ thường nhận thấy cần phải tăng hoặc giảm lượng biến một số nguyên nào đó. Ta thường thực hiện điều này khi đếm 1 giá trị nào đó trong vòng lặp 1.7 Biểu thức trong PHP 1.7.1. Biểu thức điều kiện Là biểu thức dùng kiểm tra 1 sự kiện. Nếu chúng thỏa điều kiện đó thì sẽ thực thi một hành động. Ngược lại sẽ là một hành động khác. Cú pháp: If(điều kiện){ Thực thi hành động }else{ Thực thi hành động } 1.7.2 Biểu thức switch ... case Là biểu thức sử dụng để giảm thiểu quá trình xử lý dữ liệu nếu có quá nhiều phép toán if else. 1.7.3 Biểu thức vòng lặp a) while() Phép lặp này yêu cầu phải thỏa mãn điều kiện thì mới thực thi được vòng lặp while(điều kiện){ Hành động Phép kết hợp } b)do….while() Phép lặp này sẽ thực thi hành động ít nhất là một lần. Sau đó mới tiến hành kiểm tra điều kiện. Cú pháp do{ hành động Phép kết hợp }while(điều kiện) c) for Phép lặp này là phép toán gộp các tham số. Giúp người lập trình giảm thiểu thời gian phải khai báo biến và các tham số khi thực thi việc lặp dữ liệu. Cú pháp for(khai báo biến ; Điều kiện ; biến tăng hoặc giảm){ thực hiện hành động nếu thỏa điều kiện } 1.8 Thao tác làm việc trên Form trong PHP 1.8.1 Xử lý Form trong PHP Thẻ form trong HTML có cú pháp như sau: Vậy1 form phải bao gồm: Tên form để dễ dàng tách biệt với giá trị của chúng. Action: hành động chuyển tiếp đến link xử lý. Method: Là phương thức truyền bao gồm POST và GET. Đoạn code làm những công việc sau: Đầu tiên khi khách nhập liệu tên đang nhâp vào thì chúng sẽ chuyển tới trang kiemtra.php để tiến hành xử lý thông tin. Trên phương thức POST, với tên form là fdangnhap. Giá trị mà chúng ta gửi là txtuser vừa nhập liệu. Vậy làm cách nào để chúng ta lấy được giá trị vừa nhập liệu nào?. PHP cho phép ta lấy giá trị dựa vào 2 phương thức POST và GET. Đới với POST ta có : _POST‘Giá trị’ Đối với GET ta có : _GET‘Giá trị’ Vậy với đoạn code trên có thể lấy được biến xử lý là : _POST‘txtuser’; Với txtuser là tên của field mà người sử dụng nhập liệu vào. Phương thức GET: Phương thức này cũng được dùng để lấy dữ liệu từ form nhập liệu. Tuy nhiên nhiệm vụ chính của nó vẫn là lấy nội dung trang dữ liệu từ web server. Phương thức POST: Phương thức này được sử dụng để lấy dữ liệu từ form nhập liệu. Và chuyển chúng lên trình chủ webserver. Ngoài ra còn rất nhiều sự khác biệt giữa GET và POST như: cache, security, resubmit, bookmark.... Tham khảo theo link http:www.w3schools.comtagsref_httpmethods.asp Phương thức REQUEST: chứa cả GET và POST, trong đó POST sẽ ghi đè lên _GET nếu trùng key. Vì vậy khuyến cáo POST và GET để dữ liệu rõ ràng và an toàn hơn 1.8.3 Tìm hiểu quy trình uplpoad file trong PHP Quy trình upload file Biến môi trường: _FILESfilename – Tên gốc của file _FILESfiletype – Định dạng file _FILESfilesize – Kích thước của file _FILESfiletmp_name – Tên tạm của file _FILESfileerror the error code resulting from the file upload Nguyên tắc up file temp move_uploaded_file(_FILESfiletmp_name,upload ._FILESfilename); Hiển thị thêm các thông tin về tên file, định dạng file, kích thước file 1.9 Tìm hiểu quy trình làm việc trên File và mảng 1.9.1 Tìm hiểu quy trình làm việc trên File Mở file: fopen(“fpath”,”option”); fpath: Đường dẫn file cần mở option: Thuộc tính Đóng file: fclose(File mở); Đọc file: Có 3 cách đọc file thông thường trong PHP đó là đọc từng dòng, đọc từng ký tự và đọc hết file. fgetc(fp) để đọc theo từng ký tự fgets(fp) để đọc theo từng dòng feof(fp) tìm ra vị trí cuối của 1 file fread(fp, size) đọc hết tất cả file, trong đó fp là đối tượng lúc mở file còn size là kích cỡ của file cần đọc. o filesize(path): lấy kích cỡ của file cần đọc Ghi file: fwrite(FILE,Nội dung); Thuộc tính: W: ghi đè A: Ghi tiếp tục vào file. : Xuống dòng trong file text Các hàm xử lý file khác: Kiểm tra file có tồn tại hay không: Cú pháp: file_exists(path) path là đường dẫn đến file cần kiểm tra, Kiểm tra File có được cấp quyền ghi hay không? Cú pháp: is_writable (path) path là đường dẫn đến file cần kiểm tra, Lấy nội dung một File không cần dung hàm fread Cú pháp: file_get_contents(path) path là đường dẫn đến file cần lấy Ghi nội dung File mà không cần dung hàm fwrite Cú pháp: file_put_contents(path, noidung) path là đường dẫn đến file cần ghi noidung là nội dung bạn muốn ghi vào file. Đổi tên File Cú pháp: rename(oldname, newname) oldname là đường dẫn đến file cần đổi tên newname là đường dẫn mới có kèm tên file cần đổi Copy File Cú pháp: copy(source, dest) source là path file cần dest là path file cần di chuyển tới Xóa File Cú pháp: unlink(path) path là đường dẫn đến file cần xóa Kiểm tra một đường dẫn Folder có tồn tại không Cú pháp: is_dir(filename) filename là đường dẫn đến folder cần kiểm tra Tạo một Folder mới Cú pháp: mkdir(path) path là đường dẫn đến folder cần tạo 1.9.2 Tìm hiểu quy trình làm việc trên mảng Mảng tuần tự: Mảng sử dụng khóa dựa vào những con số cụ thể, và chúng tăng dần. Mảng bất tuần tự: Là mảng sử dụng từ, cụm từ để làm khóa, thay vì thông thường vẫn sử dụng số làm khóa. 1.9.3 Các hàm bổ trợ cho mảng + Gộp mảng: array_merge(m1,m2) + Tách mảng: array_slice(mảng, vị trí, số lượng) + Sắp xếp phần tử trong mảng: Sort(m); Rsort(m) Asort(m) , ksort(m) Arsort(m), krsort(m) + Tìm kiếm phần tử trong mảng: In_array(“Phần tử”,m) 1.10 Tìm hiểu hàm và gọi lại hàm trong PHP 1.10.1 Hàm do người dùng tự định nghĩa Hàm không tham số Cú pháp: function tenham() { Lệnh thực thi } Hàm có tham số Cú pháp: function function_name(gt1,gt2) { Hành động } Hàm có tham số với giá trị trả về: Cú pháp: function function_name(Có hoặc không có đối số) { Thuc thi return giatri; } 1.10.2 Gọi lại hàm trong PHP PHP cung cấp nhiều hàm cho phép triệu gọi lại file. Như hàm include(URL đến file), require(URL Đến file). Ngoài hai cú pháp trên còn có include_once(), require_once(). Hai hàm này cũng có trách nhiệm gọi lại hàm. Những chúng sẽ chỉ gọi lại duy nhất 1 lần mà thôi. 1.11 Quản lý phiên làm việc trong PHP Cookie và session là hai phương pháp sử dụng để quản lý các phiên làm việc giữa người sử dụng và hệ thống. Việc quản lý phiên làm việc này sẽ giúp tạo ra sự chứng thực hiệu quả bởi việc xác nhận thông tin trước khi truy cập vào một phân vùng cố định. Ngoài ra, việc quản lý tốt phiên làm việc cũng giúp người truy cập cảm thấy dễ dàng sử dụng dịch vụ của trang web cho những lần truy cập sau. Bởi cớ chế quản lý phiên làm việc ghi nhận lại quá trình truy cập của người sử dụng khi họ thăm viếc trang web lần đầu. 1.11.1 Phiên làm việc Cookie Cookie là 1 đoạn dữ liệu được ghi vào đĩa cứng hoặc bộ nhớ của máy người sử dụng. Nó được trình duyệt gửi ngược lên lại server mỗi khi trình duyệt tải 1 trang web từ server. Những thông tin được lưu trữ trong cookie hoàn toàn phụ thuộc vào website trên server. Mỗi website có thể lưu trữ những thông tin khác nhau trong cookie, ví dụ thời điểm lần cuối thăm website, đánh dấu đã login hay chưa, v.v... Thiết lập cookie: Để thiết lập cookie ta sử dụng cú pháp: Setcookie(tên cookie,giá trị, thời gian sống) Tên cookie là tên mà chúng ta đặt cho phiên làm việc. Giá trị là thông số của tên cookie. Chú ý: Kịch bản cookie phải đặt trên mọi giá trị trả về bao gồm thẻ HTML và lệnh echo. Kịch bản cookie phải đặt trên mọi giá trị trả về bao gồm thẻ HTML và lệnh echo. Sử dụng cookie: Để sử dụng lại cookie vừa thiết lập, chúng ta sử dụng cú pháp: Cú pháp: _COOKIEtên cookies Tên cookie là tên mà chúng ta thiết lập phía trên. Hủy Cookie: Để hủy 1 cookie đã được tạo ta có thể dùng 1 trong 2 cách sau: + Cú pháp: setcookie(Tên cookie) Gọi hàm setcookie với chỉ duy nhất tên cookie mà thôi + Dùng thời gian hết hạn cookie là thời điểm trong quá khứ. 1.11.2 Phiên làm việc Session Một cách khác quản lý người sử dụng là session. Session được hiểu là khoảng thời gian người sử dụng giao tiếp với 1 ứng dụng. Một session được bắt đầu khi người sử dụng truy cập vào ứng dụng lần đầu tiên, và kết thúc khi người sử dụng thoát khỏi ứng dụng. Mỗi session sẽ có được cấp một định danh (ID) khác nhau và nội dung được lưu trong thư mục thiết lập trong file php.ini (tham số session.save_path). Thiết lập session: Để thiết lập 1 session ta sử dụng cú pháp: session_start() Đoạn code này phải được nằm trên các kịch bản HTML. Hoặc những lệnh echo, printf. Để thiết lập 1 giá trị session, ngoài việc cho phép bắt đầu thực thi session. Chúng ta còn phải đăng ký 1 giá trị session. Để tiện cho việc gán giá trị. 2. MySQL 2.1 MySQL là gì ? Mysql là hệ quản trị dữ liệu miễn phí, được tích hợp sử dụng chung với apache, PHP. Chính yếu tố phát triển trong cộng đồng mã nguồn mở nên mysql đã qua rất nhiều sự hỗ trợ của những lập trình viên yêu thích mã nguồn mở. Mysql cũng có cùng một cách truy xuất và mã lệnh tương tự với ngôn ngữ SQL. Nhưng Mysql không bao quát toàn bộ những câu truy vấn cao cấp như SQL. Về bản chất Mysql chỉ đáp ứng việc truy xuất đơn giản trong quá trình vận hành của website nhưng hầu hết có thể giải quyết các bài toán trong PHP. 2.2 Đặc điểm của MySQL MySQL là một phần mềm quản trị CSDL dạng serverbased (gần tương đương với SQL Server của Microsoft). MySQL quản lý dữ liệu thông qua các CSDL, mỗi CSDL có thể có nhiều bảng quan hệ chứa dữ liệu. MySQL có cơ chế phân quyền ngýời sử dụng riêng, mỗi ngýời dùng có thể được quản lý một hoặc nhiều CSDL khác nhau, mỗi ngýời dùng có một tên truy cập (user name) và mật khẩu tương ứng để truy xuất đến CSDL. 2.3 Những khái niệm cơ bản Những định nghĩa cơ bản Dữ liệu (data): • Là các thông tin của đối tượng (Ví dụ: Người, vật, một khái niệm, sự việc …) được lưu trữ trên máy tính • Có thể truy nhập vào dữ liệu để trích xuất ra các thông tin • Dữ liệu được mô tả dưới nhiều dạng khác nhau (Các ký tự, ký số, hình ảnh …) Mỗi cách mô tả như vậy gắn với một ngữ nghĩa nào đó • Dữ liệu về đối tượng có thể khác nhau, tùy thuộc vào ngữ cảnh Cơ sở dữ liệu: Tập hợp dữ liệu được tổ chức có cấu trúc liên quan với nhau và được lưu trữ trong máy tính • CSDL được thiết kế, xây dựng cho phép người dùng lưu trữ dữ liệu, truy xuất thông tin hoặc cập nhật dữ liệu Bảng: lưu trữ từng thành phần trong CSDL Dòng dữ liệu: chi tiết dữ liệu trong bảng Cột: trường nhận biết trong bảng. Định nghĩa 1 số thuật ngữ: NULL : Giá trị cho phép rỗng. AUTO_INCREMENT : Cho phép giá trị tăng dần (tự động). UNSIGNED : Phải là số nguyên dương PRIMARY KEY : Cho phép nó là khóa chính trong bảng. c)Loại dữ liệu trong Mysql: Giới thiệu 1 số loại thông dụng: 1 số dữ liệu khác có thể tham khảo trên trang chủ của mysql. 2.4 Câu truy vấn cơ bản trong MySQL Làm việc với cơ sở dữ liệu (CSDL): CREATE DATABASE tên_cơ_sở_dữ_liệu; Tạo csdl Use tên_database; Sử dụng csdl Exit; Thoát khỏi cơ sở dữ liệu: CREATE TABLE user (,…,…..); Tạo 1 bảng trong cơ sở dữ liệu: show tables: Hiển thị bảng show columns from table; Hiển thị có bao nhiêu cột trong bảng: Làm việc với bảng Truy xuất dữ liệu: • Cú pháp: SELECT tên_cột FROM Tên_bảng Truy xuất dữ liệu với điều kiện: Where • Cú pháp:SELECT tên_cột FROM Tên_bảng WHERE điều kiện; Truy cập dữ liệu và sắp xếp theo trình tự • Cú pháp: SELECT tên_cột FROM Tên_bảng WHERE điều kiện (có thể có where hoặc không) ORDER BY Theo quy ước sắp xếp. • Trong đó quy ước sắp xếp bao gồm hai thông số là ASC (từ trên xuống dưới), DESC (từ dưới lên trên). • select user_id,username from user order by username ASC ; Truy cập dữ liệu có giới hạn : • Cú pháp: SELECT tên_cột FROM Tên_bảng WHERE điều kiện (có thể có where hoặc không) LIMIT vị trí bắt đầu, số record muốn lấy ra Thêm một cột vào bảng: ALTER TABLE tên_bảng ADD AFTER Thêm giá trị vào bảng: INSERT INTO Tên_bảng(tên_cột) VALUES(Giá_trị_tương_ứng); Cập nhật dữ liệu trong bảng: Update tên_bảng set tên_cột=Giá trị mới WHERE (điều kiện). Xóa dữ liệu trong bảng: DELETE FROM tên_bảng WHERE (điều kiện). Nếu không có ràng buộc điều kiện, chúng sẽ xó toàn bộ giá trị của các record trong bảng. Kết nối bảng: Việc nối 2 với nhau để có một thông tin đầy đủ được gọi là JOIN. Sử dụng webpage PHPMyAdmin quản lý cơ sở dữ liệu Đầu tiên bật Xampp, mở một trình duyệt web lên và gõ vào http:localhostphpmyadmin 1.Tạo Database (CSDL – Cơ Sở Dữ Liệu) Bước 1: Nhập tên CSDL vào ô Create new database. Bước 2: Chọn bạn chọn utf8_general_ci (thể hiện được tiếng việt) Bước 3: Nhấn Create 2.Tạo Bảng (table) Bước 1: Chọn database Bước 2: Mục Name: khai báo tên table muốn tạo (ví dụ: danhmuc) Bước 3: Mục Number of fields: khai báo số field trong table (ví dụ: 3) Bước 4: Nhắp nút Go 3. Thêm dữ liệu vào Bảng (table) Bước 1: Chọn table Bước 2: Nhắp link Insert (xem hình) Bước 3: Nhập dữ liệu Bước 4: Nhắp nút Go 4. Xem dữ liệu trong Bảng (table) Bước 1: Chọn table muốn xem dữ liệu Bước 2: Nhắp link Browse (xem hình) Mỗi lần hiện 30 records 5. Sửa và Xóa dữ liệu trong Bảng (table) Bước 1: Chọn table muốn xóa sửa (ví dụ danhmuc) Bước 2: Nhắp link Browse. Bước 3: Hiệu chỉnhxóa: Sửa record: Nhắp nút Edit (cây viết) trên dòng chứa record. Xóa record : Nhắp nút Drop (dấu nhân màu đỏ) trên dòng chứa record. 6. Sửa cấu trúc Table (bảng): Bước 1: Chọn table Bước 2: Nhắp link Structure Bước 3: Chỉnh field: Nhắp nút Change (cây viết) Xóa field : Nhắp nút Drop (dấu nhân màu đỏ) Thêm field : Nhắp nút Go trong mục Add 7. Đổi tên Bảng (table) Bước 1: Chọn table Bước 2: Nhắp link Operations Bước 3. Rename table to: gõ tên mới Bước 4: Nhắp nút Go 8. Xóa Bảng (table) Bước 1: Chọn table Bước 2: Nhắp link Drop 2.5 Sử dụng PHP kết hợp MySQL 1 Kết nối cơ sở dữ liệu: Cú pháp:mysql_connect(hostname,user,pass) 2 Lựa chọn cơ sở dữ liệu: Cú pháp:mysql_select_db(tên_CSDL) 3 Thực thi câu lệnh truy vấn: Cú pháp:mysql_query(Câu truy vấn ở đây); 4 Đếm số dòng dữ liệu trong bảng: Cú pháp:mysql_num_rows(); 5 Lấy dữ liệu từ bảng đưa vào mảng: Cú pháp:mysql_fetch_array(); Hoặc mysql_fetch_assoc(); 6 Đóng kết nối cơ sở dữ liệu: Cú pháp:mysql_close(); CHƯƠNG 2 : KHẢO SÁT, PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 1. Khảo sát hệ thống Thực trạng và giải pháp. Hiện nay khách hàng vẫn còn phải trực tiếp đến tận nhà hàng để đặt hàng. Do việc đặt hàng trực tiếp của khách hàng với nhà hàng vẫn còn mang nặng tính thủ công truyền thống. Khách hàng thường xuyên đến tận nhà hàng trực tiếp đặt hàng tại nhà hàng. Hình thức đặt hàng trực tiếp này khó sử lý khi nhà hàng đông khách dễ gây nhầm lẫn các sản phẩm của khách hàng với nhau, có nhiều khách hàng không hài lòng khi họ phải chờ đợi quá lâu do đông người, mang lại hiệu quả không cao , mất nhiều thời gian và công sức . Dựa trên những khuyết điểm còn tồn tại, giải pháp đưa ra chính là xây dựng 1 website đặt hàng online cho nhà hàng. Việc ứng dụng công nghệ thông tin vào trong cuộc sống để xây dựng website đặt hàng online giúp cho tiến kiệm công và thời gian của con người. Do đó, để khách hàng có thể chọn một sản phẩm ưa thích nhanh hơn,tiết kiệm thời gian, hiệu quả trước khi đến nhà hàng mua các sản phẩm mình cần mua.Vì vậy xây dựng một website đặt hàng online để giúp khách hàng có thể chọn các sản phẩm của nhà hàng một cách dễ dàng, tiết kiệm công sức, thời gian và nhanh chóng . 2. Xác định yêu cầu hệ thống 2.1. Yêu cầu tổng quan Đối với nhà hàng Mục đích xây dựng hệ thống website đặt hàng online là nhằm quảng bá sản phẩm tới khách hàng và tạo ra một cầu nối trung gian giữa nhà hàng và khách hàng. Hệ thống cần xây dựng là nhằm tăng khả năng liên kết công việc của các nhân viên, thực hiện tốt cả hai công việc chính là giới thiệu và quản lý hàng. Từ đó thúc đẩy công việc chung của cửa hàng nhằm phát sinh lợi nhuận, đem lại lợi ích cho nhân viên nói riêng và cửa hàng nói chung. Hệ thống xây dựng phải có chức năng liên kết với các đối tác khác, sẽ là bạn hàng quan trọng và tin cậy của cửa hàng để cùng khai thác các lợi ích thương mại điện tử mang lại. Hệ thống cung cấp một “ không gian” để có thể quảng cáo, giúp họ có thêm nhiều khách hàng và quảng bá thương hiệu. Đối với khách hàng Website phải là một địa chỉ tốt, đáng tin cậy để khách hàng có thể dễ dàng truy cập thường xuyên để tìm kiếm các sản phẩm yêu thích . Website sẽ được đánh giá cao nếu giao diện đẹp mắt, dễ dàng sử dụng và tốc độ truy xuất dữ liệu nhanh. Trong xu thế thông tin phát triển mạnh mẽ hiện nay thì website nên thiết kế thêm một mục tin tức để khách hàng có thể thường xuyên truy cập vào, vừa có thể xem các tin tức giải trí vừa có thể cập nhật thông tin về sản phẩm. Từ đó tạo nên một thói quen, một sở thích là hễ bật trình duyệt web là khách hàng sẽ đánh địa chỉ website của nhà hàng. Đó sẽ là một lợi thế lớn để cạnh tranh với các site “đối thủ” khác, tăng sự tin cậy của khách hàng với nhà hàng. 2.2 Yêu cầu chi tiết Khách hàng Trên trang chủ của Website, thành phần chính sẽ được hiển thị một số sản phẩm, nổi bật nhất, cùng các thông tin mới nhất về sản phẩm. Xử lý mặt hàng đã chọn: thêm, xóa, cập nhật số lượng mà khách hàng đặt hàng Chức năng tìm kiếm sản phẩm: cho phép khách hàng tìm kiếm sản phẩm. Hệ thống phải được trình bày sao cho dễ hiểu, giao diện đẹp, dễ sử dụng, và làm cho khách hàng thấy được những thông tin mình cần, cung cấp thông tin quảng cáo hấp dẫn thu hút khách hàng tham quan, tìm hiểu nhà hàng. Quản trị viên: Đây là chức năng quan trọng nhất của hệ thống, là “cơ quan đầu não” điều khiển mọi hoạt động lớn nhỏ. Do đó phải thiết kế trang quản trị này thật rõ ràng, đầy đủ chức năng, dễ dàng nắm bắt và xử lý công việc. Trang này gồm các chức năng quản lý sau: quản lý thành viên quản trị,quản lý quảng cáo, quản lý tin tức, cập nhật danh mục, thông tin sản phẩm. Quản trị viên sẽ thường xuyên login vào trang web để có thể điều khiển và quản lý các công việc chung như sau: Đăng nhập: quản trị viên đăng nhập vào hệ thống để quản trị toàn bộ hệ thống. Quản lý đồ ăn: bao gồm các việc thêm, xóa, sửa các thông tin về các loại sản phẩm hay nhóm sản phẩm của nhà hàng. Quản lý loại đồ ăn: có chức năng thêm, xóa các sản phẩm trên trang web. Thêm vào danh sách sản phẩm những sản phẩm mới một cách chi tiết. Quản lý đơn hàng: có chức năng thêm và xóa hanh mục sản phẩm. Quản lí menu, thay đổi banner, thay đổi thông tin quản trị. 2.3. Yêu cầu tính năng kỹ thuật STT Nội dung yêu cầu 1 Hệ thống hoạt động trên môi trường Internet và cho phép nhiều người dùng cùng truy cập vào sử dụng cùng một lúc 2 Giao diện được trình bày khoa học, hợp lý và đảm bảo mỹ thuật hài hòa với mục đích của hệ thống, tuân thủ các chuẩn về truy cập thông tin. 3 Hệ thống phải đáp ứng khả năng an toàn, bảo mật theo 2 mức: mức xác thực người sử dụng, mức CSDL 4 Có khả năng thống kê những số liệu trống (những dữ liệu định kỳ theo tháng chưa được nhập) giúp người quản trị, người sử dụng có thể theo dõi hoạt động cập nhật dữ liệu 5 Phải có cơ chế sao lưu dữ liệu định kỳ, đột xuất đảm bảo nhanh chóng đưa hệ thống hoạt động trở lại trong trường hợp có sự cố xảy ra 3. Phân tích hệ thống 3.1.Tác nhân hệ thống Hệ thống gồm 2 tác nhân chính: Quản trị viên và Khách hàng. Hình 1: Tác nhân của hệ thống 3.2.Usecase tổng quan Hình 2 : Usecase tổng quan 3.4. Usecase cho từng chức năng cụ thể • Usecase quản lý loạn đồ ăn Hình 3 : Usecase quản lý loại đồ ăn • Usecase quản lý đơn hàng Hình 4: Usecase quản lý đơn hàng • Usecase quản lý đồ ăn Hình 5: Usecase quản lý đồ ăn • Usecase xem thông tin dồ ăn Hình 6: Usecase xem thông tin đồ ăn • Usecase quản lý giỏ hàng Hình 7: Usecase quản lý giỏ hàng • Use case thanh toán Hình 8: Usecase thanh toán 3.5. Biểu đồ trình tự • Trình tự đăng nhập Hình 9: Biểu đồ trình tự đăng nhập • Trình tự thêm loại đồ ăn mới Hình 10: Biểu đồ trình tự thêm loại đồ ăn mới • Trình tự sửa loại đồ ăn Hình 11: Biểu đồ trình tự sửa loại đồ ăn • Xóa loại đồ ăn Hình 12: Biểu đồ tuần tự xóa sản phẩm • Biểu đồ trình tự thêm đồ ăn Hình 13: Biểu đồ trình tự thêm đồ ăn • Biểu đồ trình tự sửa thông tin đồ ăn Hình 14:Biểu đồ trình tự sửa thông tin đồ ăn • Biểu đồ tuần tự xóa đồ ăn Hình 15: Biểu đồ tuần tự xóa đồ ăn • Trình tự xem đồ ăn Hình 16: Biểu đồ trình tự xem đồ ăn • Biểu đồ trình tự thêm đồ ăn vào giỏ hàng Hình 17: Biểu đồ trình tự thêm đồ ăn vào giỏ hàng • Trình tự xóa đồ ăn trong giỏ hàng Hình 18: Biểu đồ trình tự xóa đồ ăn trong giỏ hàng • Trình tự thanh toán Hình 19: Biểu đồ trình tự thanh toán • trình tự sửa đơn hàng Hình 20: Biểu đồ trình tự sửa đơn hàng • trình tự xóa đơn hàng Hình 20: Biểu đồ trình tự xóa đơn hàng 3.6. Biểu đồ hoạt động Hình 21: Biểu đồ hoạt động đăng nhập Hình22: Biểu đồ hoạt động thêm loại đồ ăn mới Hình22: Biểu đồ hoạt động sửa loại đồ ăn Hình22: Biểu đồ hoạt động xóa loại đồ ăn Hình22: Biểu đồ hoạt động xem đồ ăn của khách hàng Hình22: Biểu đồ hoạt động thêm đồ ăn mới Hình22: Biểu đồ hoạt động sửa thông tin đồ ăn Hình22: Biểu đồ hoạt động xóa đồ ăn Hình22: Biểu đồ hoạt động thêm đồ ăn vào giỏ hàng Hình22: Biểu đồ hoạt động xóa đồ ăn trong giỏ hàng Hình22: Biểu đồ hoạt động thanh toán của khách hàng Hình22: Biểu đồ hoạt động sửa đơn hàng của quản trị viên Hình22: Biểu đồ hoạt động xóa đơn hàng của quản trị viên CHƯƠNG 3: XÂY DỰNG CHƯƠNG TRÌNH 3.1. Giới thiệu chương trình • Đây là Demo website cho nhà hàng Hà Phương được xây dựng bằng ngôn ngữ PHP và MYSQL. • Hệ thống cần xây dựng là nhằm tăng khả năng liên kết công việc của các nhân viên, thực hiện tốt cả hai công việc chính là quản lý đặt hàng và quản lý khách hàng. Từ đó thúc đẩy công việc chung của nhà hàng nhằm phát sinh lợi nhuận, đem lại lợi ích cho nhân viên nói riêng và nhà hàng nói chung. • Website phải là một địa chỉ tốt, đáng tin cậy để khách hàng có thể dễ dàng truy cập thường xuyên để tìm kiếm các sản phẩm cần thiết. • Website sẽ được đánh giá cao nếu giao diện đẹp mắt, dễ dàng sử dụng và tốc độ truy xuất dữ liệu nhanh. 3.1.1. Giao diện trang chủ Trang chủ nhà hàng hiện thị tất cả các sản phẩm của nhà hàng đang kinh doanh. Khách hàng có thể xem các thông tin sản phẩm và đặt các sản phẩm của nhà hàng một cách nhanh nhất… Hình 23: Giao diện trang chủ 3.1.2. Giao diện trang đăng nhập quản trị Giao diện đăng nhập cho phép người quản trị viên đăng nhập vào tài khoản của mình. Người quản trị viên cần có một tài khoản và mật khẩu của mình để tiến hành đăng nhập vào website. Hình 24: Giao diện đăng nhập trang quan trị 3.1.3. Giao diện quản lý thành viên quản trị. Trang quản lý thành viên quản trị cho phép thêm thành viên quản trị website. Quản tri viên sẽ được cấp một tài khoản và một mất khẩu để đăng nhập vào hệ thống website của nhà hàng. Hình 25: Giao diện trang quản lý thành viên quản trị 3.1.4. Giao diện trang quản trị Trang này giúp quản tri viên đưa các sản phẩm và thông tin sản phâm lên website nhà hàng . Hình 26: Giao diện trang Admin quản lý sản phẩm 3.1.5. Giao diện quản lý đơn hàng Trang này giúp Admin có thể quản lý các đơn hàng khách hàng đã đặt và thông tin chi tiết về đơn hàng. Hình 27: Giao diện trang quản lý đơn hàng 3.1.6. Giao diện trang quản lý danh mục sản sản phẩm. Hình 28: Giao diện trang quản lý danh mục sản phẩm. KẾT LUẬN Kết quả đạt được: Hiểu được ngôn ngữ lập trình website PHP MYSQL Áp dụng vào xây dựng website đặt hàng online cho nhà hàng Hà Phương. Hạn chế, khó khăn và hướng phát triển: Hạn Chế: + Sản phẩm chỉ mang tính demo do đó chưa có nhiều thông tin. + Kiến thức lập trình còn hạn chế nên chương trình còn chưa được tốt. Khó Khăn: + Do kiến thức còn hạn chế nên bài báo cáo còn thiếu sót. Hướng phát triển + Phát triển thêm hệ thống lớn trên website, đưa vào ứng dụng thực tế + Mở rộng thêm các moduleplugin ứng dụng, thực hiện triển khai trên host, gán tên miền. TÀI LIỆU THAM KHẢO 1. Bộ môn mạng máy tính và truyền thôngtrường đại học cntt và tt, giáo trình phát triển ứng dụng trên môi trường mạng (2016) 2. Nguyễn Tấn Trường (2005), Hướng Dẫn Thực Hành Thiết kế web Toàn Tập, Nhà Xuất Bản Thanh Niên. 3. Trang website dạy thiết kế web trực tuyến http:www.w3schools.com. 4. Phạm Hữu Khang, Hoàng Đức Hải xây dựng úng dụng web bằng php mysql ,Nhà xuất Bản Phương Đông. NHẬN XÉT CỦA GIÁO VIÊN Thái Nguyên, ngày… tháng … năm 2017 Giáo viên hướng dẫn Ths.Lương Thị Minh Huế
MỤC LỤC LỜI NÓI ĐẦU CHƯƠNG 1: CƠ SỞ LÝ THUYẾT PHP .4 1.2 Lịch sử phát triển PHP 1.3 Cú pháp Các kiểu liệu sở 1.4 Biến lập trình PHP 1.5 Hằng lập trình PHP 1.6 Toán tử PHP 1.7 Biểu thức PHP .9 1.7.1 Biểu thức điều kiện 1.7.2 Biểu thức switch case 1.7.3 Biểu thức vòng lặp 1.8 Thao tác làm việc Form PHP 10 1.8.1 Xử lý Form PHP .10 1.8.3 Tìm hiểu quy trình uplpoad file PHP .11 1.9 Tìm hiểu quy trình làm việc File mảng 12 1.9.1 Tìm hiểu quy trình làm việc File 12 1.9.2 Tìm hiểu quy trình làm việc mảng 13 1.9.3 Các hàm bổ trợ cho mảng 13 1.10 Tìm hiểu hàm gọi lại hàm PHP 14 1.10.1 Hàm người dùng tự định nghĩa .14 1.10.2 Gọi lại hàm PHP 14 1.11 Quản lý phiên làm việc PHP .14 1.11.1 Phiên làm việc Cookie 15 1.11.2 Phiên làm việc Session .15 MySQL 16 2.1 MySQL ? 16 2.2 Đặc điểm MySQL 16 2.3 Những khái niệm .16 2.4 Câu truy vấn MySQL 17 2.5 Sử dụng PHP kết hợp MySQL 20 CHƯƠNG : KHẢO SÁT, PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 21 Khảo sát hệ thống .21 Xác định yêu cầu hệ thống 21 2.1 Yêu cầu tổng quan .21 2.2 Yêu cầu chi tiết .22 2.3 Yêu cầu tính kỹ thuật 23 Phân tích hệ thống 23 3.1.Tác nhân hệ thống 23 3.2.Usecase tổng quan 24 3.4 Usecase cho chức cụ thể 24 3.5 Biểu đồ trình tự 27 3.6 Biểu đồ hoạt động .34 CHƯƠNG 3: XÂY DỰNG CHƯƠNG TRÌNH 41 3.1 Giới thiệu chương trình 41 3.1.1 Giao diện trang chủ 41 3.1.2 Giao diện trang đăng nhập quản trị 42 3.1.3 Giao diện quản lý thành viên quản trị .42 3.1.4 Giao diện trang quản trị 43 3.1.5 Giao diện quản lý đơn hàng 43 3.1.6 Giao diện trang quản lý danh mục sản sản phẩm .44 KẾT LUẬN 45 TÀI LIỆU THAM KHẢO 46 NHẬN XÉT CỦA GIÁO VIÊN 47 LỜI NÓI ĐẦU Với internet thực nhiều công việc với tốc độ nhanh chi phí thấp nhiều so với cách thức truyền thống Chính điều thay đổi sống người từ học tập, việc làm, văn hóa có tác động mạnh mẽ công nghệ thông tin internet Trước muốn tìm hiểu vấn đề phải dung phương thức tuyền thống đọc sách, báo, nghe đài, tivi hay nghe trực tiếp từ người khác ngày có thêm kênh thông tin thông tin internet Nhận thấy sức mạnh internet công nghệ thông tin việc tổ chức quản lý công việc nên em lựa chọn đề tài “Xây dựng website đặt hàng online cho nhà hàng Hà Phương php mysql” Nội dung đề tài xây dựng website đặt hàng online , giúp cho người quản lý dễ dàng quản lý khách hàng dễ chọn lựa sản phẩm yêu thích Đề tài bao gồm nội dung: - Cơ sở lý thuyết - Phân tích thiết kế - Xây dựng website Sau thời gian học tập nghiên cứu, em hoàn thành đề tài Em xin chân thành cảm ơn cô : Lương Thị Minh Huế nhiệt tình hướng dẫn em hoàn thành tốt báo cáo thực tập chuyên ngành Mặc dù cố gắng để hoàn thiện đề tài với tất lỗ lực thân với kinh nghiệm kiến thức hạn chế em đề tài em nhiều thiếu sót Em mong nhận quan tâm ý kiến đóng góp thầy, cô giáo để đề tài em hoàn thiện hơn! CHƯƠNG 1: CƠ SỞ LÝ THUYẾT PHP PHP (viết tắt hồi quy "PHP: Hypertext Preprocessor") ngôn ngữ lập trình kịch hay loại mã lệnh chủ yếu dùng để phát triển ứng dụng viết cho máy chủ, mã nguồn mở, dùng cho mục đích tổng quát Nó thích hợp với web dễ dàng nhúng vào trang HTML Do tối ưu hóa cho ứng dụng web, tốc độ nhanh, nhỏ gọn, cú pháp giống C Java, dễ học thời gian xây dựng sản phẩm tương đối ngắn so với ngôn ngữ khác nên PHP nhanh chóng trở thành ngôn ngữ lập trình web phổ biến giới 1.2 Lịch sử phát triển PHP • PHP/FI PHP phát triển từ sản phẩm có tên PHP/FI PHP/FI Rasmus Lerdorf tạo năm 1995, ban đầu xem tập đơn giản mã kịch Perl để theo dõi tình hình truy cập đến sơ yếu lý lịch ông mạng Ông đặt tên cho mã kịch 'Personal Home Page Tools' Khi cần đến chức rộng hơn, Rasmus viết thực thi C lớn để truy vấn tới sở liệu giúp cho người sử dụng phát triển ứng dụng web đơn giản Rasmus định công bố mã nguồn PHP/FI cho người xem, sử dụng sửa lỗi có đồng thời cải tiến mã nguồn PHP/FI, viết tắt từ "Personal Home Page/Forms Interpreter", bao gồm số chức cho PHP ta biết đến chúng ngày Nó có biến kiểu Perl, thông dịch tự động biến form cú pháp HTML nhúng Cú pháp giống Perl, hạn chế nhiều, đơn giản có phần thiếu quán Vào năm 1997, PHP/FI 2.0, lần viết lại thứ hai phiên C, thu hút hàng ngàn người sử dụng toàn giới với xấp xỉ 50.000 tên miền ghi nhận có cài đặt nó, chiếm khoảng 1% số tên miền có mạng Internet Tuy có tới hàng nghìn người tham gia đóng góp vào việc tu chỉnh mã nguồn dự án vào thời chủ yếu dự án người PHP/FI 2.0 thức công bố vào tháng 11 năm 1997, sau thời gian dài công bố dạng beta Nhưng không lâu sau đó, thay alpha PHP 3.0 • PHP PHP 3.0 phiên cho thấy hình ảnh gần gũi với phiên PHP mà biết ngày Nó Andi Gutmans Zeev Suraski tạo năm 1997 sau viết lại hoàn toàn mã nguồn trước Lý mà họ tạo phiên họ nhận thấy PHP/FI 2.0 yếu việc phát triển ứng dụng thương mại điện tử mà họ xúc tiến dự án trường đại học Trong nỗ lực hợp tác bắt đầu xây dựng dựa sở User có PHP/FI, Andi, Rasmus Zeev định hợp tác công bố PHP 3.0 phiên hệ PHP/FI 2.0, chấm dứt phát triển PHP/FI 2.0 Một sức mạnh lớn PHP 3.0 tính mở rộng mạnh mẽ Ngoài khả cung cấp cho User cuối sở hạ tầng chặt chẽ dùng cho nhiều sở liệu, giao thức API khác nhau, tính mở rộng PHP 3.0 thu hút nhiều nhà phát triển tham gia đề xuất mô đun mở rộng Hoàn toàn kết luận điểm mấu chốt dẫn đến thành công vang dội PHP 3.0 Các tính khác giới thiệu PHP 3.0 gồm có hỗ trợ cú pháp hướng đối tượng nhiều cú pháp ngôn ngữ quán khác Ngôn ngữ hoàn toàn công bố tên mới, xóa bỏ mối liên hệ với việc sử dụng vào mục đích cá nhân hạn hẹp mà tên PHP/FI 2.0 gợi nhắc Nó đặt tên ngắn gọn 'PHP', kiểu viết tắt hồi quy "PHP: Hypertext Preprocessor" Vào cuối năm 1998, PHP phát triển số cài đặt lên tới hàng chục ngàn người sử dụng hàng chục ngàn Web site báo cáo cài Vào thời kì đỉnh cao, PHP 3.0 cài đặt cho xấp xỉ 10% số máy chủ Web có mạng Internet PHP 3.0 thức công bố vào tháng năm 1998, sau thời gian tháng cộng đồng kiểm nghiệm • PHP Vào mùa đông năm 1998, sau PHP 3.0 thức công bố, Andi Gutmans Zeev Suraski bắt đầu bắt tay vào việc viết lại phần lõi PHP Mục đích thiết kế nhằm cải tiến tốc độ xử lý ứng dụng phức tạp, cải tiến tính mô đun sở mã PHP Những ứng dụng chạy PHP 3.0 dựa tính hỗ trợ nhiều sở liệu API bên thứ ba, PHP 3.0 không thiết kế để xử lý ứng dụng phức tạp cách có hiệu Một động mới, có tên 'Zend Engine' (ghép từ chữ đầu tên Zeev Andi), đáp ứng nhu cầu thiết kế cách thành công, lần giới thiệu vào năm 1999 PHP 4.0, dựa động này, kèm với hàng loạt tính bổ sung, thức công bố vào tháng năm 2000, gần năm sau PHP 3.0 đời Ngoài tốc độ xử lý cải thiện nhiều, PHP 4.0 đem đến tính chủ yếu khác gồm có hỗ trợ nhiều máy chủ Web hơn, hỗ trợ phiên làm việc HTTP, tạo đệm thông tin đầu ra, nhiều cách xử lý thông tin người sử dụng nhập vào bảo mật cung cấp vài cấu trúc ngôn ngữ Với PHP 4, số nhà phát triển dùng PHP lên đến hàng trăm nghìn hàng triệu site công bố cài đặt PHP, chiếm khoảng 20% số tên miền mạng Internet Nhóm phát triển PHP lên tới số hàng nghìn người nhiều nghìn người khác tham gia vào dự án có liên quan đến PHP PEAR, PECL tài liệu kĩ thuật cho PHP • PHP Sự thành công to lớn PHP 4.0 không làm cho nhóm phát triển PHP tự mãn Cộng đồng PHP nhanh chóng giúp họ nhận yếu PHP đặc biệt với khả hỗ trợ lập trình hướng đối tượng (OOP), xử lý XML, không hỗ trợ giao thức máy khách MySQL 4.1 5.0, hỗ trợ dịch vụ web yếu Những điểm mục đích để Zeev Andi viết Zend Engine 2.0, lõi PHP 5.0 Một thảo luận Slashdot cho thấy việc phát triển PHP 5.0 bắt đầu vào thời điểm tháng 12 năm 2002 vấn Zeev liên quan đến phiên có mặt mạng Internet vào khoảng tháng năm 2002 Ngày 29 tháng năm 2003, PHP Beta thức công bố để cộng đồng kiểm nghiệm Đó phiên Zend Engine 2.0 Phiên Beta sau mắt vào tháng 10 năm 2003 với xuất hai tính chờ đợi: Iterators, Reflection namespaces tính gây tranh cãi khác bị loại khỏi mã nguồn Ngày 21 tháng 12 năm 2003: PHP Beta công bố để kiểm tra với việc phân phối kèm với Tidy, bỏ hỗ trợ Windows 95, khả gọi hàm PHP bên XSLT, sửa chữa nhiều lỗi thêm nhiều hàm PHP thức mắt ngày 13 tháng năm 2004 sau chuỗi dài kiểm tra thử bao gồm Beta 4, RC 1, RC2, RC3 Mặc dù coi phiên sản xuất PHP 5.0 số lỗi đáng kể lỗi xác thực HTTP Ngày 14 tháng năm 2005, PHP 5.1 Beta PHP Team công bố đánh dấu chín muồi PHP với có mặt PDO, nỗ lực việc tạo hệ thống API quán việc truy cập sở liệu thực câu truy vấn Ngoài ra, PHP 5.1, nhà phát triển PHP tiếp tục có cải tiến nhân Zend Engine 2, nâng cấp mô đun PCRE lên PCRE 5.0 tính cải tiến SOAP, streams SPL • PHP Hiện phiên PHP phát triển, PHP sử dùng thử download địa http://snaps.php.net Phiên PHP kỳ vọng lấp đầy khiếm khuyết PHP phiên tại, ví dụ: hỗ trợ namespace (hiện nhà phát triển chưa công bố rõ ràng vấn đề này); hỗ trợ Unicode; sử dụng PDO làm API chuẩn cho việc truy cập sở liệu, API cũ bị đưa thành thư viện PECL 1.3 Cú pháp Cách khai báo PHP Cách Thẻ mở ?> %> - Thông tin gồm chuỗi biến.Dùng dấu , để nỗi chuỗi biến chuỗi chuỗi Chú thích PHP: // Nội dung thích /* Nội dung thích */ Các kiểu liệu sở - Kiểu Boolean: có hai giá trị TRUE FALSE Kiểu Interger (số nguyên): Giá trị số hệ thập phân, thập lục phân, bát phân - Kiểu Float/Double (số thực) - Kiểu String (chuỗi, ký tự) • Mỗi ký tự chiếm byte • Mỗi chuỗi chứa hay nhiều ký tự thuộc 256 ký tự khác • Chuỗi giới hạn kích thước - Kiểu Array (mảng phần tử): - Kiểu Object (đối tượng) - Chuyển đổi kiểu liệu • Trong trình tính toán, kiểu liệu không phù hợp (kết tính toán vượt khỏi phạm vi liệu cũ) chuyển đổi kiểu liệu • Thực hiện: ghi tên kiểu liệu mà biến muốn chuyển đổi vào phía trước biến 1.4 Biến lập trình PHP Khởi tạo biến: Biến giá trị thay đổi Giá trị giá trị gán sau giá trị biến Biến nội suy biến nhận biết chuỗi “” Nội suy biến chứa dấu ‘ ‘’ Không nội suy biến, chứa dấu $ dấu “ 1.5 Hằng lập trình PHP - Hằng giá trị không thay đổi trình thực chương trình Cú pháp: Define(“TENHANG”,giá trị); Hằng nội suy chuỗi 1.6 Toán tử PHP Đối với ngôn ngữ lập trình, toán tử biểu thức kiến thức sử dụng để xử lý thao tác giai đoạn lập trình Toán tử gán: - Toán tử gán khởi tạo biến Nó gồm ký tự đơn = Toán tử gán lấy giá trị toán hạng bên phải gán vào toán hạng bên trái Toán tử số học: - Là dạng phép tính giản đơn cộng, trừ, nhân, chia số học Ngoài có phép chia lấy dư (%) Được sử dụng để lấy đơn vị dư phép toán Toán tử so sánh: - Là toán tử sử dụng để thực phép toán so sánh hai số hạng Toán tử logic: - Toán tử logic tổ hợp giá trị boolean Toán tử kết hợp: - Khi tạo mã PHP, thường nhận thấy cần phải tăng giảm lượng biến số nguyên Ta thường thực điều đếm giá trị vòng lặp 1.7 Biểu thức PHP 1.7.1 Biểu thức điều kiện Là biểu thức dùng kiểm tra kiện Nếu chúng thỏa điều kiện thực thi hành động Ngược lại hành động khác Cú pháp: If(điều kiện){ //Thực thi hành động }else{ //Thực thi hành động } 1.7.2 Biểu thức switch case Là biểu thức sử dụng để giảm thiểu trình xử lý liệu có nhiều phép toán if else 1.7.3 Biểu thức vòng lặp a) while() Phép lặp yêu cầu phải thỏa mãn điều kiện thực thi vòng lặp while(điều kiện){ // Hành động Phép kết hợp } b)do….while() Phép lặp thực thi hành động lần Sau tiến hành kiểm tra điều kiện Cú pháp do{ //hành động Phép kết hợp }while(điều kiện) c) for Phép lặp phép toán gộp tham số Giúp người lập trình giảm thiểu thời gian phải khai báo biến tham số thực thi việc lặp liệu Cú pháp for(khai báo biến ; Điều kiện ; biến tăng giảm){ //thực hành động thỏa điều kiện } 1.8 Thao tác làm việc Form PHP 1.8.1 Xử lý Form PHP Thẻ form HTML có cú pháp sau: Vậy1 form phải bao gồm: - Tên form để dễ dàng tách biệt với giá trị chúng Action: hành động chuyển tiếp đến link xử lý Method: Là phương thức truyền bao gồm POST GET Đoạn code làm công việc sau: Đầu tiên khách nhập liệu tên nhâp vào chúng chuyển tới trang kiemtra.php để tiến hành xử lý thông tin Trên phương thức POST, với tên form fdangnhap Giá trị mà gửi txtuser vừa nhập liệu Vậy làm cách để lấy giá trị vừa nhập liệu nào? 10 Hình 20: Biểu đồ trình tự sửa đơn hàng • trình tự xóa đơn hàng Hình 20: Biểu đồ trình tự xóa đơn hàng 33 3.6 Biểu đồ hoạt động Hình 21: Biểu đồ hoạt động đăng nhập Hình22: Biểu đồ hoạt động thêm loại đồ ăn 34 Hình22: Biểu đồ hoạt động sửa loại đồ ăn Hình22: Biểu đồ hoạt động xóa loại đồ ăn 35 Hình22: Biểu đồ hoạt động xem đồ ăn khách hàng Hình22: Biểu đồ hoạt động thêm đồ ăn 36 Hình22: Biểu đồ hoạt động sửa thông tin đồ ăn Hình22: Biểu đồ hoạt động xóa đồ ăn 37 Hình22: Biểu đồ hoạt động thêm đồ ăn vào giỏ hàng Hình22: Biểu đồ hoạt động xóa đồ ăn giỏ hàng 38 Hình22: Biểu đồ hoạt động toán khách hàng Hình22: Biểu đồ hoạt động sửa đơn hàng quản trị viên 39 Hình22: Biểu đồ hoạt động xóa đơn hàng quản trị viên 40 CHƯƠNG 3: XÂY DỰNG CHƯƠNG TRÌNH 3.1 Giới thiệu chương trình •Đây Demo website cho nhà hàng Hà Phương xây dựng ngôn ngữ PHP MYSQL •Hệ thống cần xây dựng nhằm tăng khả liên kết công việc nhân viên, thực tốt hai công việc quản lý đặt hàng quản lý khách hàng Từ thúc đẩy công việc chung nhà hàng nhằm phát sinh lợi nhuận, đem lại lợi ích cho nhân viên nói riêng nhà hàng nói chung •Website phải địa tốt, đáng tin cậy để khách hàng dễ dàng truy cập thường xuyên để tìm kiếm sản phẩm cần thiết •Website đánh giá cao giao diện đẹp mắt, dễ dàng sử dụng tốc độ truy xuất liệu nhanh 3.1.1 Giao diện trang chủ Trang chủ nhà hàng thị tất sản phẩm nhà hàng kinh doanh Khách hàng xem thông tin sản phẩm đặt sản phẩm nhà hàng cách nhanh nhất… Hình 23: Giao diện trang chủ 41 3.1.2 Giao diện trang đăng nhập quản trị Giao diện đăng nhập cho phép người quản trị viên đăng nhập vào tài khoản Người quản trị viên cần có tài khoản mật để tiến hành đăng nhập vào website Hình 24: Giao diện đăng nhập trang quan trị 3.1.3 Giao diện quản lý thành viên quản trị Trang quản lý thành viên quản trị cho phép thêm thành viên quản trị website Quản tri viên cấp tài khoản để đăng nhập vào hệ thống website nhà hàng Hình 25: Giao diện trang quản lý thành viên quản trị 42 3.1.4 Giao diện trang quản trị Trang giúp quản tri viên đưa sản phẩm thông tin sản phâm lên website nhà hàng Hình 26: Giao diện trang Admin quản lý sản phẩm 3.1.5 Giao diện quản lý đơn hàng Trang giúp Admin quản lý đơn hàng khách hàng đặt thông tin chi tiết đơn hàng Hình 27: Giao diện trang quản lý đơn hàng 43 3.1.6 Giao diện trang quản lý danh mục sản sản phẩm Hình 28: Giao diện trang quản lý danh mục sản phẩm 44 KẾT LUẬN Kết đạt được: -Hiểu ngôn ngữ lập trình website PHP & MYSQL -Áp dụng vào xây dựng website đặt hàng online cho nhà hàng Hà Phương Hạn chế, khó khăn hướng phát triển: Hạn Chế: + Sản phẩm mang tính demo chưa có nhiều thông tin + Kiến thức lập trình hạn chế nên chương trình chưa tốt Khó Khăn: + Do kiến thức hạn chế nên báo cáo thiếu sót Hướng phát triển + Phát triển thêm hệ thống lớn website, đưa vào ứng dụng thực tế + Mở rộng thêm module/plugin ứng dụng, thực triển khai host, gán tên miền 45 TÀI LIỆU THAM KHẢO [1] Bộ môn mạng máy tính truyền thông-trường đại học cntt tt, giáo trình phát triển ứng dụng môi trường mạng (2016) [2] Nguyễn Tấn Trường (2005), Hướng Dẫn Thực Hành Thiết kế web Toàn Tập, Nhà Xuất Bản Thanh Niên [3] Trang website dạy thiết kế web trực tuyến http://www.w3schools.com/ [4] Phạm Hữu Khang, Hoàng Đức Hải xây dựng úng dụng web php mysql ,Nhà xuất Bản Phương Đông 46 NHẬN XÉT CỦA GIÁO VIÊN Thái Nguyên, ngày… tháng … năm 2017 Giáo viên hướng dẫn Ths.Lương Thị Minh Huế 47 ... lựa chọn đề tài Xây dựng website đặt hàng online cho nhà hàng Hà Phương php mysql Nội dung đề tài xây dựng website đặt hàng online , giúp cho người quản lý dễ dàng quản lý khách hàng dễ chọn lựa... khách hàng phải trực tiếp đến tận nhà hàng để đặt hàng Do việc đặt hàng trực tiếp khách hàng với nhà hàng mang nặng tính thủ công truyền thống Khách hàng thường xuyên đến tận nhà hàng trực tiếp đặt. .. pháp đưa xây dựng website đặt hàng online cho nhà hàng Việc ứng dụng công nghệ thông tin vào sống để xây dựng website đặt hàng online giúp cho tiến kiệm công thời gian người Do đó, để khách hàng