CỞ SỞ LÍ THUYẾT
Ngôn ngữ lập trình PHP
1.1 Ngôn ngữ PHP là gì?
PHP là một ngôn ngữ 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ủ Nó được được chạy ở phía server nhằm sinh ra mã html trên client Nhờ vậy mà nó tạo ra các ứng dụng web chạy trên máy chủ Mã lệnh PHP có thể được chúng vào trong HTML nhờ sử dụng cặp thẻ PHP
Hiện nay, PHP là loại ngôn ngữ lập trình phổ biến nhất được dùng để phát triển các ứng dụng web Bởi đây là loại ngôn ngữ thân thiên và tương thích cao với mọi ngôn ngữ và trình duyệt web Mà nó còn được sử dụng miễn phí tiết kiệm được chi phí các doanh nghiệp Bởi vậy lập trình php là lựa chọn tối ưu cho các doanh nghiệp vừa và nhỏ khi muốn thiết kế và phát triển web của mình.
PHP có thể giúp bạn tạo ra các website “động” với tính tương tác cao Được đánh giá là một ngôn ngữ rất thích hợp với web và có thể dễ dàng được nhúng vào trang HTML Với sự hỗ trợ của PHP độ hiển thị của website trở nên dễ hiểu và dễ sử dụng hơn Không những vậy PHP còn giúp các trang web có thể tương thích với nhiều trình duyệt phổ biến trên thế giới Nhờ đó mà website sẽ ít gặp lỗi tương thích hơn Gia tăng sự trải nghiệm của người dùng với website
1.2 Lịch sử phát triển của PHP
PHP được phát triển từ một sản phẩm có tên là PHP/FI PHP/FI do Rasmus Lerdorf tạo ra năm 1995 Và nó được sửa lại lần nữa năm 1997 Đó là thời kỳ bắt đầu của PHP đầy khó khăn.
PHP 3.0: Đượ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.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ử 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.PHP 3.0 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.Cho phép người dùng có thể mở rộng theo modul.
=> Chính điều này làm cho PHP3 thành công so với PHP2 Lúc này họ chính thức đặt tên ngắn gọn là 'PHP' ( Hypertext Preprocessor ).
PHP4: Được công bố năm 2000 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.
PHP5: 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.
PHP6: 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ỉ 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.
Tổng quản về hệ quản trị cơ sở dữ liệ 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 MySQL miễn phí hoàn toàn cho nên bạn có thể tải về MySQL từ trang chủ.
Nó có nhiều phiên bản cho các hệ điều hành khác nhau: phiên bản Win32 cho các hệ
4 điều hành dòng Windows, Linux, Mac OS X, Unix, FreeBSD, NetBSD, Novell NetWare, SGI Irix, Solaris, SunOS,…
Quá trình hình thành và phát triển của MySQL được tóm tắt như sau:
Công ty Thuy Điển MySQL AB phát triển MySQL vào năm 1994.
Phiên bản đầu tiên của MySQL phát hành năm 1995.
Công ty Sun Microsystems mua lại MySQL AB trong năm 2008
Năm 2010 tập đoàn Oracle thâu tóm Sun Microsystems Ngay lúc đó, đội ngũ phát triển của MySQL tách MySQL ra thành 1 nhánh riêng gọi là MariaDB Oracle tiếp tục phát triển MySQL lên phiên bản 5.5.
2013 MySQL phát hành phiên bản 5.6
2015 MySQL phát hành phiên bản 5.7
MySQL đang được phát triển lên phiên bản 8.0
MySQL hiện nay có 2 phiên bản miễn phí (MySQL Community Server) và có phí (Enterprise Server).
BOOTSTRAP VÀ RESPONSIVE
Bootstrap là front-end framework, là một bộ sưu tập miễn phí các công cụ để tạo ra các trang web và các ứng dụng web Bootstrap bao gồm HTML và CSS dựa trên các mẫu thiết kế cho kiểu chữ, hình thức, các button và các thành phần giao diện khác, cũng như mở rộng tùy chọn JavaScript Boostrap định nghĩa sẵn các class CSS giúp người thiết kế giao diện website tiết kiệm rất nhiều thời gian Các thư viện Bootstrap có những đoạn mã sẵn sàng cho chúng ta áp dùng vào website của mình mà không phải tốn quá nhiều thời gian để tự viết Với Bootstrap, việc phát triển giao diện website để phù hợp với đa thiết bị trở nên dễ dàng hơn bao giờ hết Bootstrap cung cấp tính năng responsive và mobile first, nghĩa là làm cho trang web có thể tự co giãn để tương thích với mọi thiết bị khác nhau, từ điện thoại di động đến máy tính bảng, máy tính xách tay, máy tính để bàn, Một khía cạnh khác là responsive web design làm cho trang web cung cấp được trải nghiệm tuyệt vời cho người dùng trên nhiều thiết bị, kích thước màn hình khác nhau Một trang có thể hoạt động tốt bất kể sự biến đổi sẽ cung cấp một trải nghiệm người dùng tốt và nhất quán hơn một trang được thiết kế cho một loại thiết bị và kích thước màn hình cụ thể.
DATATABLE
DataTables là một plug-in cho thư viện jQuery Javascript Nó là một công cụ tuyệt vời để thực hiện các công việc liên quan tới các bảng biểu được hiển thị trên các trang HTML Sự tuyệt vời ấy được thể hiện qua các ưu điểm nổi bật như sau: Phân trang, search tức thì, sắp xếp nhiều cột dữ liệu
Hỗ trợ rất nhiều các data source: DOM, Javascript, Ajax và các xử lý trên máy chủ
Dễ dàng tương thích với: jQuery UI, Bootstrap
Có rất nhiều các tính năng được mở rộng:
Tùy chọn mở rộng các tính năng bằng API
Xử lý thông minh về độ rộng của các cột, search dữ liệu nhanh chóng, tự động load dữ liệu bằng ajax,
Installation
Datatable là một thư viện Javascript tuyệt vời cho sự thêm các tương tác với bảng dữ liệu trong HTML Thoạt nhìn, Datatable có vẻ như rất phức tạp, tuy nhiên đi sâu vào tìm hiểu thì sẽ thấy công cụ này hỗ trợ cho cả phía develop cũng như phía người dùng những điều rất tuyệt vời Datatable rất dễ dàng sử dụng, chỉ cần sử dụng cấu trúc bảng HTML bằng các thẻ và nhúng thêm Jquery từ phiên bản 1.7 trở lên là có thể sử dụng được dataTable.
Data
Data thì tương đối phức tạp, và tất cả các dạng data thì khác nhau Tuy nhiên, đối với Datatable thì chúng đều được xử lý gọn nhẹ, và dữ liệu được hiển thị luôn luôn trông khá bắt mắt với front end Có 3 khái niệm cốt lõi trong cách xử lý dữ liệu của DataTable:
Data sources
Các khái niệm về xử lý dữ liệu đã được định nghĩa ở phần trên, phần này tiếp tục tìm hiểu làm thế nào để DataTable có thể lấy được dữ liệu Có 3 nguồn cơ bản cho dữ liệu mà DataTable sẽ hiển thị trong bảng:
PHÂN TÍCH THIẾT KẾ HỆ THỐNG
Đối tượng sử dụng hệ thống
Website hoạt động chủ yếu phục vụ cho năm đối tượng chính: Chủ cửa hàng (Owner), Quản lý (Manager), Nhân viên kho (storekeepers), Nhân viên bán hàng (Seller), Nhân viên giao hàng (Shiper), Nhân viên kỹ thuật (Technical staff), Khách hàng thành viên (Member customers), Khách hàng vãng lai (Normal customers).
- Là người quản trị website có quyền cao nhất, nắm tất cả các quyền trong website.
- Có thể thiết lập được quyền của tất cả thành viên sử dụng trang web
- Xem tất cả thông tin sản phẩm và lợi nhuận.
- Xem được báo cáo thông kê doanh thu
- Là người quản trị website có quyền cao thứ hai, nắm hầu hết các quyền trong website.
- Quản lý thông tin sản phẩm.
- In hóa đơn, báo cáo thống kê.
- Quản lý không được phép xem lợi nhuận của cửa hàng và không được thiết lập quyền của người sử dụng trang web.
- Quản lý không được xóa dữ liệu
- Là khách hàng đã đăng kí và đăng nhập tài khoản thành viên vào hệ thống.
- Là khách hàng đã đăng kí và đăng nhập tài khoản thành viên vào hệ thống.
- Xem, sửa, xóa đơn hàng của mình
- Quản lý được giỏ hàng và xem được tình trạng đơn hàng.
- Lựa chọn phương thức thanh toán o Thanh toán trực tiếp. o Thanh toán online.
- Là khách hàng chưa đăng nhập vào hệ thống
- Tìm kiếm, xem sản phẩm.
- Là người quản lí kho.
- Nhập, xuất thông tin hàng hóa
- Xem các báo cáo nhập xuất.
- Là người trả lời bình luận và tư vấn khách hàng
- Quản lý được khách hàng.
- Tạo đơn hàng khi khách mua tại cửa hàng
- Được phép cập nhập thông tin giao hàng của khách hàng
- Là người trực tiếp nhận vào giao sản phẩm cho khách hàng
- Được phép xem thông tin giao hàng của khách hàng.
- Cập nhập tình trạng, trạng thái đơn hàng của đơn mình giao.
Phân tích
- Giao diện đơn giản, dễ sử dụng
- Có tính bảo mật, an toàn.
- Tốc độ xử lý nhanh chóng, dễ dàng.
Là người nắm tất cả các quyền trong hệ thống Là người giám sát, quản lý các chức năng của hệ thống và sao lưu, bảo mật thông tin của khách hàng Là người xem được thông tin về giá vốn và lợi nhuận của cửa hàng Chủ cửa hàng còn có thể thiết lập được các quyền sử dụng trang web cho nhân viên của cửa hàng.
Là những người chỉ xem sản phẩm trong danh mục nhưng chưa mua, có thể xem quảng cáo, giá cả và chất lượng sản phẩm Khách hàng vãng lai muốn mua phải đăng ký thành viên.
Là người có thể xem, đặt mua hàng Họ có thể theo dõi và hủy đơn hàng
Là người trực tiếp quản lý kho Họ có thể thêm, cập nhật các thông tin của hàng hóa Họ có thể nhập, xuất hàng hóa khi cần thiết.
Là người trực tiếp xem và phản hồi các thắc mắc của khách hàng Họ có thể sửa đổi thông tin giao hàng của khách hàng khi khách hàng phản hồi Họ có thể tạo đơn hàng cho những khách hàng mua tại cửa hàng.
Là người trực tiếp nhận đơn hàng để giao cho khách hàng.
Là người nắm hầu hết các quyền của hệ thống Là người thay mặt chủ cửa hàng quản lý hầu hết các quyền hành website Họ có thể sửa, xóa thông tin của sản phẩm, quản lý dơn hàng, thống kê báo cáo, in dữ liệu.
Bảng 1: Tác nhân của hệ thống
Hình 2: Usecase khách vãng lai
2.2.2.3 Usecase quản lí sản phẩm
Hình 4: Usecase quản lí sản phẩm
2.2.2.4 Usecase quản lí tin tức
Hình 5: Usecase quản lí tin tức
2.2.2.5 Usecase quản lí đơn hàng
Hình 6: Usecase quản lí đơn hàng
Hình 7: Usecase quản lí kho
2.2.2.7 Usecase quản lí giao hàng
Hình 8: Usecase quản lí giao hàng
2.2.3.1 Sơ đồ hoạt động quản lí người dùng
Hình 9: Sơ đồ hoạt động quản lí người dùng
2.2.3.2 Sơ đồ quản lí sản phẩm
Hình 10: Sơ đồ hoạt động quản lí sản phẩm
2.2.3.3 Sơ đồ hoạt động quản lí mua hàng
Hình 11: Sơ đồ hoạt động quá trình mua hàng
2.2.4.1 Hiên thị trang đăng kí
Hình 12: Sơ đồ tuần tự đăng kí
2.2.4.2 Hiện thị trang đăng nhập
Hình 13: Sơ đồ tuần tự đăng nhập
2.2.4.3 Hiện thị trang tìm kiếm sản phẩm
Hình 14: Sơ đồ tuần tự tìm kiếm sản phẩm
2.2.4.4 Hiển thị trang Đặt hàng
Hình 15: Sơ đồ tuần tự đặt hàng
2.2.4.5 Hiển thị trang cập nhật đơn hàng.
Hình 16: Sơ đồ tuần tự cập nhật đơn hàng
2.2.4.6 Hiển thị trang khách hàng thanh toán online
Hình 17: Sơ đồ tuần tự thanh toán online
2.2.4.7 Sơ đồ tuần tự báo cáo thống kê
Hình 18: Sơ đồ tuần tự thống kê doanh số
2.2.4.7.2 Hiển thị trang cập nhật nhà cung cấp
Hình 19: Sơ đồ tuần tự cập nhật nhà cung cấp
2.2.6 Sơ đồ phân cấp chức năng
2.2.6.1 Phân cấp chức năng FrontEnd
Thông tin cá nhân Đặt hàng
Lựa chọn sản phẩm Quản lý giỏ hàng
Chỉnh sửa thông tin giao hàng
Chọn phương thức thanh toán Theo dõi đơn hàng
Tên sản phẩm Loại sản phẩm Hãng sản phẩm Giá sản phẩm Đặt mua
Hình 21: Phân cấp chức năng FrontEnd
2.2.6.2 Phân cấp chức năng BackEnd
Quản trị hệ thống Đăng nhập Đăng xuất Đổi mật khẩu
Sản phẩm Người dùng Sản phẩm
Cập nhập thông tin Đơn đặt hàng Phản hồi
Tin tức Xử lý đơn hàng
Hình 22: Phân cấp chức năng BackEnd
Thiết kế hệ thống
3.1 Thiết kế cơ sở dữ liệu
Diễn giải Bảng người dùng Bảng sản phẩm Bảng danh mục sản phẩm Bảng đơn hóa đơn
Bảng chi tiết hóa đơn Bảng nhà cung cấp Bảng phiếu nhập Bảng chi tiết phiếu nhập Bảng hỗ trợ
Bảng 2: Các bảng cơ sở dữ liệu
Thuộc tính idnd tennd usename password hovaten email sodienthoai diachi ngaydangki phanquyen
Mã người dùng Tên người dùng Tài khoản Mật khẩu
Số điện thoại Địa chỉ Ngày đăng kí Phân quyền
Int Varchar(50) Varchar(50) Varchar(40) Varchar(50) Varchar(100) Varchar(10) Varchar(255) Date
Primary key Not null Not null Not null Not null Not null Not null Not null Not null Not null
Thuộc tính madm tendm dequi
Mã danh mục Tên danh mục Đệ qui
Primary key Not null Not null
Thuộc tính mahd idhd hoten diachi dienthoai email ngaydathang trangthai
Mã hóa đơn Thông tin vai trò
Họ tên Địa chỉ Điện thoại Email Ngày đăng nhập Trạng thái
Int Varchar(50) Varchar(50) Varchar(255) Varchar(10) Varchar(50) Date
Primary key Not null Not null Not null Not null Not null Not null Not null
Thuộc tính mahd tensp soluong gia phuongthucthanhtoan
Mã hóa đơn Tên sản phẩm
Số lượng giá Phương thức thanh toán
Mã chi tiết hóa đơn
Forikey Not null Not null Not null Not null
Bảng 6: Bảng chi tiết hóa đơn
Thuộc tính idsp tensp mau dongia chitiet hinhanh soluong daban ma_dm ngaycapphat trang_thai
Mã sản phẩm Tên sản phẩm Mẫu Đơn giá Chi tiết Hình ảnh
Mã đơn hàng Ngày cấp phát Trạng thái
Int Varchar(50) Varchar(20) Decimail(14,0) Text
Primary key Not null Not null Not null
Not null Not null Not null Foreign key Not null Not null
Thuộc tính idnsx tennsx diachi dienthoai
Id nhà sản xuất Tên nhà sản xuất Địa chỉ
Bảng 8: Bảng nhà sản xuất
Thuộc tính idht chude noidung hoten dienthoai email ngaygui
Mã phiếu nhập Chủ đề
Primary key Not null Not null Not null Not null Not null Not null
Thuộc tính matt tentt ndngan noidung hinhanh ngaydangtin tacgia trangthai
Mã tin tức Tên tin tức
Số điện thoại Hình ảnh Ngày đăng tin Tác giả
Primary key Not null Not null Not null Not null Not null Not null Not null
Thuộc tính id tenadmin usename password ngaysinh gioitinh email dienthoai diachi status level
Mã tin tức Tên tin tức
Số điện thoại Hình ảnh Giới tính Email Điện thoại Địa chỉ Trạng thái Cấp
Int Varchar(255) Varchar(255) Varchar(50) Date
Primary key Not null Not null Not null Not null Not null Not null Not null Not null Not null Not null
- Mục đích: Xem thông tin sản phẩm cần mua
- Tác nhân: Tất cả các tác nhân.
- Điều kiện trước: Người sử dụng phải đang nhập thành công
- Đầu ra: Thông tin mặt hàng.
- Mục đích: Mua món hàng cần mua
- Điều kiện trước: khách hàng đăng nhập thành công
- Mục đích: Thay đổi lại đơn hàng đã đặt
- Điều kiện: Người sử dụng phải đang nhập thành công
3.2.4 Cập nhật thông tin cá nhân
- Mục đích: Thay đổi thông tin cá nhân.
- Tác nhân: Tất cả các tác nhân sử dụng web.
- Điều kiện: Người sử dụng phải đang nhập thành công
- Đầu ra: Thông tin cá nhân.
- Mục đích: Hủy bỏ đơn hàng đã đặt
- Điều kiện: Người sử dụng phải đang nhập thành công
- Đầu ra: Đơn hàng bị hủy.
3.2.6 Cập nhật doanh mục sản phẩm
- Mục đích: Thêm, sử, xóa một sản phẩm nào đó
- Tác nhân: Nhân viên kho.
- Điều kiện: Người sử dụng phải đang nhập thành công
- Đầu vào: Truy cập vào Manager.
- Đầu ra: Cập nhật thành công.
3.2.7 Cập nhật thông tin nhà cung cấp
- Mục đích: Thêm, sử, xóa một nhà cung cấp nào đó
- Tác nhân: Nhân viên kho.
- Điều kiện: Người sử dụng phải đang nhập thành công
- Đầu vào: Truy cập vào Manager.
- Đầu ra: Cập nhật thành công.
3.2.8 Cập nhật tình trạng đơn hàng
- Mục đích: Cập nhật tình trang của đơn hàng.
- Tác nhân: Nhân viên kho, nhân viên giao hàng.
- Điều kiện: Người sử dụng phải đang nhập thành công
- Đầu ra: Cập nhật thành công.
- Mục đích: Chọn nhân viên giao hàng
- Tác nhân: Quản trị viên.
- Điều kiện: Người sử dụng phải đăng nhập thành công
- Đầu ra: Đơn hàng đã được chọn người giao.