CƠ SỞ LÝ THUYẾT
Giới thiệu ngôn ngữ lập trình PHP
2.1.1 Lịch sử phát triển của ngôn ngữ lập trình PHP
PHP (viết tắt hồi quy “PHP: Hypertext Preproccssor”) 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, 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ữ laaoj trình web phổ biến nhất thế giới.
PHP được phát triển từ một sản phẩm có tên là PHP/FI PHP/FI doRasmus Lerdorf tạo ra năm 1994, 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 PHP/FI 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.
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 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, PHP/FI 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. PHP/FI 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.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 PHP/FI 2.1 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ở người dùng đã có của PHP/FI, 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 PHP/FI 2.0, và chấm dứt phát triển PHP/FI 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 người dùng 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 PHP/FI 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.
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ăm1999 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.
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 năm bản chính thức đã ra mắt ngày 13 tháng 7 năm2004 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.
Giới thiệu MySQL
MySQL là hệ quản trị cơ sở dữ liệu tự do nguồn mở phổ biến nhất thế giới và được các nhà phát triển rất ưa chuộng trong quá trình phát triển ứng dụng Vì 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 Người dùng có thể tải về MySQL miễn phí từ trang chủ. MySQL 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, FreeBSD, NetBSD, Novell NetWare, SGI Irix, Solaris, SunOS,
MySQL là một trong những ví dụ rất cơ bản về Hệ Quản trị Cơ sở dữ liệu quan hệ sử dụng Ngôn ngữ truy vấn có cấu trúc (SQL).
MySQL được sử dụng cho việc bổ trợ NodeJs, PHP, Perl, và nhiều ngôn ngữ khác, làm nơi lưu trữ những thông tin trên các trang web viết bằng NodeJs, PHP hay Perl, MySQL là một phần mềm quản trị CSDL mã nguồn mở, miễm phí nằm trong nhóm LAMP (Linux – Apache – MySQL – PHP)
2.2.2 Ưu điểm khi dùng MySQL
Sự linh hoạt về flatform là 1 đặc tính nổi bật của MySQL với các phiên bản đang được hỗ trợ của Linux, Unix, Windows, MySQL cho phép tùy biến hoàn toàn theo ý muốn, thêm vào các yêu cầu thích hợp cho database server.
Các chuyên gia cơ sỡ dữ liệu có thể cấu hình máy chủ cơ sở dữ liệu MySQL đặc trưng cho các ứng dụng đặc thù thông qua kiến trúc storage- engine MySQL có thể đáp ứng khả năng xử lý những yêu cầu khắt khe nhất của từng hệ thống, MySQL còn đưa ra các “công cụ” cần thiết cho các hệ thống doanh nghiệp khó tính bằng tiện ích tải tốc độ cao, bộ nhớ cache và các cơ chế xử lý nâng cao khác.
Các tiêu chuẩn đảm bảo của MySQL giúp cho người dùng vững tin và chọn sử dụng ngay, MySQL đưa ra nhiều tùy chọn và các giải pháp để người sử dụng dùng ngay cho server cơ sở dữ liệu MySQL
MySQL hỗ trợ giao dịch mạnh 1 cách tự động, thống nhất, độc lập và bền vững, ngoài ra khả năng giao dịch cũng được phân loại và hỗ trợ giao dịch đa dạng mà người viết không gây trở ngại cho người đọc và ngược lại Các dữ liệu được đảm bảo toàn vẹn trong suốt quá trình server có hiệu lực và các mức giao dịch độc lập được chuyên môn hóa cao.
2.2.2.5 Nơi tin cậy để lưu trữ web và dữ liệu
Do MySQL có engine xử lý tốc độ cao và khả năng chèn dữ liệu nhanh, hỗ trợ tốt cho các chức năng chuyên dùng cho web,…nên MySQL là lựa chọn tốt nhất cho các ứng dụng web và các ứng dụng web doanh nghiệp.
Doanh nghiệp nào cũng cần tính năng bảo mật dữ liệu tuyệt đối vì đó chính là lợi ích quan trọng hàng đầu, và đó cũng là lý do mà các chuyên gia về cơ sỡ dữ liệu chọn dùng MySQL MySQL có các kỹ thuật mạnh trong việc xác nhận truy cập cơ sở dữ liệu và chỉ có người dùng đã được xác nhận mới có thể truy cập vào server cơ sở dữ liệu Bên cạnh đó, tiện ích backup và recovery cho phép backup logic và recovery toàn bộ hoặc tại 1 thời điểm nào đó.
2.2.2.7 Phát triển ứng dụng hỗn hợp
MySQL cung cấp hỗ trợ hỗn hợp cho bất kỳ sự phát triển ứng dụng nào nên MySQL được xem là cơ sở dữ liệu mã nguồn mở phổ biến nhất thế giới. Thư viện plugin có sẵn để nhúng vào cơ sở dữ liệu MySQL hỗ trợ trong bất kỳ ứng dụng nào MySQL còn cung cấp các bộ kết nối cho phép tất cả các form của ứng dụng ưu tiên sử dụng MySQL như 1 server quản lý dữ liệu.
Quá trình cài đặt MySQL diễn ra khá nhanh chóng trên Microsoft Windows, Linux, Macintosh hoặc Unix Sau khi cài đặt, các tính năng tự động mở rộng không gian, tự khởi động lại và cấu hình động được thiết lập sẵn sàng cho người quản trị cơ sở dữ liệu làm việc.
MySQL còn có các công cụ quản lý đồ họa mà 1 DBA có thể quản lý, sửa chữa và điều khiển hoạt động của nhiều server, điều khiển tác vụ thiết kế dữ liệu và ETL, quản trị cơ sỡ dữ liệu hoàn thiện cũng như quản lý công việc và thực hiện kiểm tra.
2.2.2.9 Mã nguồn mở tự do và hỗ trợ xuyên suốt
Nhiều doanh nghiệp lo lắng việc sử dụng mã nguồn mở là không an toàn và không được hỗ trợ tốt vì đa số tin vào các phần mềm có bản quyền,nhưng đối với MySQL, các nhà doanh nghiệp hoàn toàn có thể yên tâm về điều này, MySQL có chính sách bồi thường hẳn hoi và luôn hỗ trợ tối đa cho quý doanh nghiệp.
2.2.2.10 Chi phí thấp Đối với các dự án phát triển mới, nếu các doanh nghiệp sử dụngMySQL thì đó là 1 chọn lựa đúng đắn vừa tiết kiệm chi phí vừa đáng tin cậy.Mức duy trì của MySQL không chiếm nhiều thời gian sửa chữa của người quản trị cơ sở dữ liệu và các doanh nghiệp thật sự hài lòng về khả năng xử lý thông qua việc sử dụng server cơ sở dữ liệu MySQL và kiến trúc scale-out.
Giới thiệu ngôn ngữ lập trình JavaScript
2.3.1 Ngôn ngữ lập trình JavaScript là gì?
JavaScript là một ngôn ngữ lập trình đa nền tảng (cross-platform), ngôn ngữ lập trình kịch bản, hướng đối tượng JavaScript là một ngôn ngữ nhỏ và nhẹ (small and lightweight) Khi nằm bên trong một môi trường (host environment), JavaScript có thể kết nối tới các object của môi trường đó và cung cấp các cách quản lý chúng (object).
JavaScript chứa các thư viện tiêu chuẩn cho các object, ví dụ như: Array, Date, và Math, và các yếu tố cốt lõi của ngôn ngữ lập trình như: toán tử (operators), cấu trúc điều khiển (control structures), và câu lệnh. JavaScript có thể được mở rộng cho nhiều mục đích bằng việc bổ sung thêm các object; ví dụ:
Client-side JavaScript - JavaScript phía máy khách, JavaScript được mở rộng bằng cách cung cấp các object để quản lý trình duyệt và Document Object Model (DOM) của nó Ví dụ, phần mở rộng phía máy khách cho phép một ứng dụng tác động tới các yếu tố trên một trang HTML và phản hồi giống các tác động của người dùng như click chuột, nhập form, và chuyển trang.
Server-side JavaScript - JavaScript phía Server, JavaScript được mở rộng bằng cách cung cấp thêm các đối tượng cần thiết để để chạyJavaScript trên máy chủ Ví dụ, phần mở rộng phía server này cho phép ứng dụng kết nối với cơ sở dữ liệu (database), cung cấp thông tin một cách liên tục từ một yêu cầu tới phần khác của ứng dụng, hoặc thực hiện thao tác với các tập tin trên máy chủ.
PHÂN TÍCH THIẾT KẾ
Liệt kê Actor – Usecase
3.1.1.4 Tạo tài khoản nhân viên, phân quyền
3.1.3 Quản lý tour du lịch (Manager)
3.1.5.3 Xem thông tin cá nhân
Xây dựng sơ đồ Usecase
Xây dựng sơ đồ hoạt động
3.3.1 Sơ đồ hoạt động Đặt tour du lịch
Hình 3:Sơ đồ hoạt động Đặt tour du lịch
3.3.2 Sơ đồ hoạt động Quản lý tour du lịch
Hình 4:Sơ đồ hoạt động Quản lý tour du lịch
3.3.3 Sơ đồ hoạt động Đăng ký thành viên
Hình 5:Sơ đồ hoạt động Đăng ký thành viên
Xây dựng sơ đồ tuần tự
3.4.1 Sơ đồ tuần tự Đặt tour du lịch
Hình 6:Sơ đồ tuần tự Đặt tour du lịch
3.4.2 Sơ đồ tuần tự Quản lý tour du lịch
Hình 7:Sơ đồ tuần tự Quản lý tour du lịch
3.4.3 Sơ đồ tuần tự Đăng ký thành viên
Hình 8:Sơ đồ tuần tự Đăng ký thành viên
Xây dựng cơ sở dữ liệu
Thuộc tính Giải thích Kiểu dữ liệu Ghi chú
UserName Tên đăng nhập Varchar(20) Khóa chính passWord Mật khẩu Varchar(20)
Thuộc tính Giải thích Kiểu dữ liệu Ghi chú
Id_TV Mã thành viên Int(5) Khóa chính
Ten_TV Tên thành viên Varchar(50)
So_Dien_Thoai Số điện thoại Int(13)
Mat_Khau Mật khẩu Varchar(20)
Thuộc tính Giải thích Kiểu dữ liệu Ghi chú
Id_Danh_Sach_Dat_Tour Mã danh sách đặt tour Int(5) Khóa chính
Id_Dat_Tour Mã đặt tour Int(5) Khóa chính
So_Luong_Dat Số lượng đặt Int(2)
Thanh_Tien Thành tiền Int(13)
Bảng 3:tbl_chi_tiet_dat
Thuộc tính Giải thích Kiểu dữ liệu Ghi chú
Id_Dat_Tour Mã đặt tour Int(5) Khóa chính
Id_Danh_Sach_Tour Mã danh sách tour Int(5) Khóa ngoại
Email Email Varchar(100) Khóa ngoại
So_Luong_Dat Số lượng đặt Int(2)
Ngay_Dat_Tour Ngày đặt tour Datetime
Tong_Tien Tổng tiền Int(13)
Thuộc tính Giải thích Kiểu dữ liệu Ghi chú
Id_Danh_Sach_Tour Mã danh sách tour Int(5) Khóa chính
Id_Tour Mã tour Int(5) Khóa chính
Thoi_Gian_Den Thời gian đến Varchar(100)
Thoi_Gian_ve Thời gian về Varchar(100)
So_Luong_Con_Lai Số lượng còn lại Int(2)
Bảng 5:tbl_danh_sach_tour
Thuộc tính Giải thích Kiểu dữ liệu Ghi chú
Id_Loai_Tour Mã loại tour Int(5) Khóa chính
Ten_Loai_Tour Tên loại tour varchar(100)
Mo_Ta Mô tả Text
Thuộc tính Giải thích Kiểu dữ liệu Ghi chú
Id_Anh Mã ảnh Int(5) Khóa chính
Thuộc tính Giải thích Kiểu dữ liệu Ghi chú
Id_Tour Mã tour Int(5) Khóa chính
Id_Chuong_Trinh Mã chương trình Int(5) Khóa ngoại
Id_Anh Mã ảnh Int(5) Khóa ngoại
Ten_Tour Tên tour Varchar(100)
Gia_Tour Giá tour Int(13)
So_Luong_Toi_Da Số lượng tối đa Int(2)
Tong_So_Ngay Tổng số ngày Int(2)
Noi_Dung Nội dung Text
Thuộc tính Giải thích Kiểu dữ liệu Ghi chú
Id_Chuong_Trinh Mã chương trình Int(5) Khóa chính
Id_Loai_Tour Mã loại tour Int(5) Khóa ngoại
So_Ngay_Di Số ngày đi Varchar(20)
Lich_Trinh Lịch trình Text
Loai_Xe Loại xe Int(2)
Khach_San Khách sạn Varchar(100)
DEMO CHƯƠNG TRÌNH
Trang chủ khách hàng
Hình 11: Trang chủ danh mục tour
Hình 12: Trang xem chi tiết thông tin và thời gian khỏi hành
Hình 13:Trang đặt tour, số lượng đặt tour và các điều khoản hủy tour
Trang quản trị viên
Hình 15:Trang tạo mới tour
Hình 16:Trang quản lý tour, chọn chức năng xóa hoặc cập nhật tour
Hình 17:Trang cập nhật tour
4.2.5 Trang quản lý loại tour
Hình 18: Trang quản lý loại tour, cập nhật tour
4.2.6 Trang tạo mới loại tour
Hình 19:Trang tạo mới loại tour
4.2.7 Trang cập nhật loại tour
Hình 20:Trang cập nhật loại tour
4.2.8 Trang quản lý hình ảnh
Hình 21:Trang quản lý hình ảnh
4.2.9 Trang tạo mới chương trình tour
Hình 22: Trang tạo mới chương trình tour
4.2.10 Trang quản lý chương trình tour
Hình 23:Trang quản lý chương trình tour, cập nhật chương trình tour
4.2.11 Trang cập nhật chương trình tour
Hình 24:Trang cập nhật chương trình tour
4.2.12 Trang tạo mới danh sách tour
Hình 25:Trang tạo mới danh sách tour
4.2.13 Trang quản lý danh sách tour
Hình 26:Trang quản lý danh sách tour
4.2.14 Trang cập nhật danh sách tour
Hình 27:Trang cập nhật danh sách tour
4.2.15 Trang danh sách đặt tour
Hình 28:Trang danh sách đặt tour
4.2.16 Trang quản lý thành viên
Hình 29:Trang quản lý thành viên
4.2.17 Trang quản lý tour đang đặt
Hình 30:Trang quản lý tour đang đặt
Demo quá trình đặt tour du lịch
4.3.1 Lựa chọn tour thích hợp để đặt
Hình 32: Chọn lịch khởi hành
4.3.3 Nhập số lượng và đặt tour
Hình 33: Nhập số lượng và đặt tour
Hình 34: Lịch sử đặt tour, chờ xác nhận
Hình 35: Xác nhận đặt tour
4.3.6 Lịch sử đặt tour đã được xác nhận
Hình 36: Lịch sử đặt tour đã xác nhận