CƠ SỞ LÝ THUYẾT
Ngôn ngữ lập trình PHP
PHP: Hypertext Preprocessor, thường được viết tắt thành PHP 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 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 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.
Ngôn ngữ, các thƣ viện, tài liệu gốc của PHP đƣợc xây dựng bới cộng động và có sự đóng góp rất lớn của Zend Inc., công ty do các nhà phát triển cốt lõi của PHP lập nên nhằm tạo ra một môi trường chuyên nghiệp để đưa PHP phát triển ở quy mô doanh nghiệp.
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 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ữ lệ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 Lịch sử phiên bản PHP:
Tổng quan về hệ quản trị cơ sở dữ liệ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 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ệ đ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).
Mô hình MVC(Model-View-Controller)
Mô hình MVC(model-view-controller) là mô hình chuẩn cho ứng dụng web đƣợc sử dụng nhiều nhất ngày nay.Mô hình MVC đƣợc sử dụng lần đầu tiên trong Smalltalk, sau đó đƣợc sử dụng phổ biến trong ngôn ngữ lập trình java Hiện nay, đã có hàng chục PHP framework dựa trên mô hình này.
Mô hình MVC là viết tắc của 3 chữ Model-View-Controller Mô hình này tách một ứng dụng web ra làm 3 thành phần đảm nhận chức năng tách biệt, thuận tiện cho việc xử lý và bảo trì.
- Model: Chịu trách nhiệm quản lý dữ liệu, nó lưu trữ và truy xuất các thực thể từ cơ sở dữ liệu nhƣ MySQL, Sql server, đồng thời chứa các logic đƣợc thực thi bởi ứng dụng.
- View: Chiệu trách nhiệm hiển thị dữ liệu đã đƣợc truy xuất từ model theo một format nào đó theo ý của lập trình viên Cách sử dụng của View tương tự như các Module template thường thấy trong các ứng dụng web phổ biến như Wordpress.
- Controller: Trung gian, làm nhiệm vụ xử lý cho Model và View tương tác với nhau Controller nhận request từ client, sau đó gọi các Model để thực hiện các hoạt động đƣợc yêu cầu và gửi ra ngoài View View sẽ chịu trách nhiệm format lại data từ controller gửi ra và trình bày dữ liệu theo 1 định dạng đầu ra(html).
Hình minh họa dưới đây sẽ cho ta thấy rõ cách mô hình MVC hoạt động:
Sơ đồ tuần tự về cách hoạt động của mô hình MVC:
Hình 2: Sơ đồ tuần tự về mô hình MVC
Thƣ viện Jquery
Jquery là một thƣ viện javascript đa tính năng, nhỏ gọn, nhanh, đƣợc tạo bởi John Resig vào năm 2006 với một phương châm hết sức ý nghĩa: Write less, do more.
Jquery đơn giản hóa việc duyệt tài liệu html, xử lý sự kiện, hoạt ảnh và tương tác Ajax để phát triển web nhanh chóng Các phân tích web đã chỉ ra rằng,Jqery là thƣ viện Javascript đƣợc triển khai rộng rãi nhất. jQuery là một bộ công cụ JavaScript đƣợc thiết kế để đơn giản hóa các tác vụ khác nhau bằng cách viết ít code hơn Dưới đây liệt kê một số tính năng tối quan trọng đƣợc hỗ trợ bởi jQuery:
- Thao tác DOM: jQuery giúp dễ dàng lựa chọn các phần tử DOM để traverse (duyệt) một cách dễ dàng nhƣ sử dụng CSS, và chỉnh sửa nội dung của chúng bởi sử dụng phương tiện Selector mã nguồn mở, mà được gọi là Sizzle.
- Xử lý sự kiện: jQuery giúp tương tác với người dùng tốt hơn bằng việc xử lý các sự kiện đa dạng mà không làm cho HTML code rối tung lên với các Event Handler.
- Hỗ trợ AJAX: jQuery giúp bạn rất nhiều để phát triển một site giàu tính năng và phản hồi tốt bởi sử dụng công nghệ AJAX.
- Hiệu ứng động: jQuery đi kèm với rất nhiều hiệu ứng động đẹp mà bạn có thể sử dụng cho các website của mình.
- Gọn nhẹ: jQuery là thƣ viện gọn nhẹ - nó chỉ có kích cỡ khoảng 19KB (gzipped).
- Đƣợc hỗ trợ hầu hết bởi các trình duyệt hiện đại: jQuery đƣợc hỗ trợ hầu hết bởi các trình duyệt hiện đại, và làm việc tốt trên IE 6.0+, FF 2.0+, Safari 3.0+, Chrome và Opera 9.0+.
- Cập nhật và hỗ trợ các công nghệ mới nhất: jQuery hỗ trợ CSS3 Selector và cú pháp XPath cơ bản.
Bootstrap
Bootstrap là một framework bao gồm các HTML, CSS và JavaScript template dùng để phát triển website chuẩn responsive Bootstrap cho phép quá trình thiết kế website diễn ra nhanh chóng và dễ dàng hơn dựa trên những thành tố cơ bản sẵn có nhƣ typography, forms, buttons, tables, grids, navigation, image carousels…
Bootstrap là một bộ sưu tập miễn phí của các mã nguồn mở và công cụ dùng để tạo ra một mẫu webiste hoàn chỉnh Với các thuộc tính về giao diện đƣợc quy định sẵn như kích thước, màu sắc, độ cao, độ rộng…, các designer có thể sáng tạo nhiều sản phẩm mới mẻ nhƣng vẫn tiết kiệm thời gian khi làm việc với framework này trong quá trình thiết kế giao diện website.
Bootstrap là sản phẩm của Mark Otto và Jacob Thornton tại Twitter Nó đƣợc xuất bản nhƣ là một mã nguồn mở vào ngày 19/8/2011 trên GitHub Tên gọi ban đầu là Twitter Blueprint. Đến ngày 31/1/2012, Bootstrap phiên bản 2 đã đƣợc phát hành Bootstrap 2 được bổ sung bố cục lưới 12 cột với thiết kế tùy chỉnh đáp ứng cho nhiều màn hình kích thước Tiếp nối sự thành công của phiên bản 2, Bootstrap 3 ra đời vào ngày 19/8/2013 với giao diện tương thích với smartphone.
Chỉ 3 năm sau ngày ra mắt, Bootstrap đã trở thành No.1 project trên GitHub Vào tháng 10/2014, Mark Otto công bố phiên bản Bootstrap 4 đang đƣợc phát triển Phiên bản alpha đầu tiên của Bootstrap 4 đã đƣợc triển khai vào tháng 8/2015 Phiên bản mới nhất của Bootstrap được giới thiệu đến người dùng là Bootstrap 4.3.1 Cho đến nay, Bootstrap vẫn là một trong những framework thiết kế website có lượng người dùng “khủng” nhất.
6.3 Vì sao nên dùng Bootstrap
Giữa muôn vàng ứng dụng thiết kết website hiện nay, Boostrap vẫn có khả năng cạnh tranh cao là nhờ những đặc điểm nổi bật sau:
- Dễ dàng thao tác: Cơ chế hoạt động của Boostrap dựa trên xu hướng mã nguồn mở HTML, CSS và Javascript Bên cạnh đó các mã nguồn này cũng có thể dễ dàng thay đổi và chỉnh sửa tùy ý.
- Tùy chỉnh dễ dàng: Bootstrap đƣợc tạo ra từ các mã nguồn mở cho phép designer linh hoạt hơn CDN bootstrap còn giúp bạn tiết kiệm dung lƣợng vì không cần tải mã nguồn về máy.
- Chất lƣợng sản phẩm đầu ra hoàn hảo: Bootstrap là sáng tạo của các lập trình viên giỏi trên khắp thế giới, đã đƣợc nghiên cứu và thử nghiệm trên các thiết bị và được kiểm tra nhiều lần trước khi được đưa vào sử dụng Do đó, khi chọn Boostrap, bạn có thể tin rằng mình sẽ tạo nên những sản phẩm với chất lƣợng tốt nhất.
- Độ tương thích cao: Khả năng tương thích với mọi thiết bị và nền tảng là điểm cộng lớn nhất của Bootstrap Sử dụng Grid System cùng với hai bộ tiền xử lý Less và Sass, Bootstrap mặc định hỗ trợ Responsive có khả năng tự động điều chỉnh kích thước trang web theo khung browser, phù hợp với mọi thiết bị và nền tả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, Quản lý, Nhân viên bán hàng, nhân viên giao hàng, Khách hàng thành viên, Khách hàng vãng lai.
- 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.
- Có thể xem giá vốn của hàng hóa và báo cáo lợi nhuận.
- 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.
- Thêm , cập nhật sản phẩm.
- Xem danh sách các sản phẩm.
- Cập nhập thông tin đơn hàng.
- Xem thông tin đơn hàng.
- Cập nhật thông tin giao hà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.
- Đƣợc phép cập nhập thông tin cá nhân.
- Tìm kiếm sản phẩm, xem thông tin sản phẩm.
- Lựa chọn phương thức thanh toán.
- Quản lý đƣợc giỏ hàng, đặt hàng và xem đƣợc tình trạng đơn hàng.
- Là khách hàng chƣa đăng nhập vào hệ thống.
- Đƣợc phép tìm kiếm và xem thông tin sản phẩm.
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.
4.2 Yêu cầu chức năng 4.2.1 Tổng quan chức năng
Chủ cửa hàng Là người nắm tất cả các quyền trong hệ thống Họ có thể thêm, xóa sửa tất cả thông tin của sản phẩm, nhân viên trong cửa hàng, quản lý chung tất cả các thành phầ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.
Quản lý 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 thành phần của nhà hàng (trừ lợi nhuận của việc kinh doanh) Họ có thể sửa, xóa thông tin của sản phẩm, nhân viên trong nhà hàng khi được chủ nhà hàng cho phép Là Người quản lý các đơn hàng khi khách hàng đặt.
Nhân viên giao hàng Là người quản lý các đơn hàng và chọn các đơn hàng để giao, thông qua đơn hàng chờ.
Khách hàng Là người mua hàng của cửa hàng, xem thông tin, tìm kiếm, bình luận về sản phẩm, cập nhật thông tin.
Là người quản lý đơn hàng, quản lý sản phẩm
Khách vãng lai Là người chỉ xem thông tin, tìm kiếm sản phẩm, muốn mua hàng thì phải đăng ký tài khoản
Bảng 1: Tổng quan chức năng hệ thống
Hình 3: Sơ đồ Usecase tổng quát
Hình 4: Usecase khách vãng lai
Hình 5: Usecase khách hàng thành viên
Hình 6: Usecase admin quản lý sản phẩm
Hình 7: Usecase admin quản lý đơn hàng
4.2.2.5 Quản lý thương hiệu sản phẩm
Hình 8: Usecase admin quản lý thương hiệu sản phẩm
4.2.2.6 Quản lý danh mục sản phẩm
Hình 9: Usecase admin quản lý danh mục sản phẩm
Hình 10: Usecase admin quản lý kho hàng
4.2.3.1 Đăng ký khách hàng thành viên
Hình 11: Sơ đồ hoạt động đăng ký khách hàng thành viên
4.2.3.2 Sơ đồ hoạt động đăng nhập hệ thống
Hình 12: Sơ đồ hoạt động đăng nhập hệ thống
4.2.3.3 Sơ đồ hoạt động đặt hàng
Hình 13: Sơ đồ hoạt động đặt hàng
4.2.3.4 Sơ đồ hoạt động khách hàng xem tình trạng đơn hàng
Hình 14: Sơ đồ hoạt động khách hàng xem tình trạng đơn hàng
4.2.4.1 Hiển thị khách hàng đăng nhập
Hình 15: Sơ đồ tuần tự khách hàng đăng nhập
4.2.4.2 Hiển thị khách hàng đăng ký
Hình 16: Sơ đồ tuần tự hiển thị khách hàng đăng ký
4.2.4.3 Sơ đồ tuần tự mua hàng
Hình 17: Sơ đồ tuần tự mua hàng
4.2.4.4 Sơ đồ tuần tự kiểm tra tình trạng đơn hàng
Hình 18: Sơ đồ tuần tự kiểm tra tình trạng đơn hàng
4.2.4.5 Sơ đồ tuần tự quản trị viên thêm sản phầm
Hình 19: Sơ đồ tuần tự quản trị viên thêm sản phẩm
4.2.4.6 Sơ đồ tuần tự quản trị viên thêm danh mục sản phẩm
Hình 20: Sơ đồ tuần tự quản trị viên thêm danh mục sản phẩm
4.2.5 Sơ đồ phân cấp chức năng
Hình 21: Sơ đồ front-end
Hình 22: Sơ đồ back-end
Thiết kế hệ thống
5.1 Thiết kế cơ sở dữ liệu
Thuộc tính Giải thích Kiểu dữ liệu Ràng buộc adminID ID admin Int(11) Primary key adminName Tên admin Varchar(50) Not null adminEmail Email admin Varchar(70) Not null
AdminUser Tên đăng nhập Varchar(50) Not null
AdminPass Mật khẩu Varchar(50) Not null
Thuộc tính Giải thích Kiểu dữ liệu Ràng buộc brandID Mã thương hiệu Int(11) Primary key brandName Tên thương hiệu Varchar(60) Not null
Thuộc tính Giải thích Kiểu dữ liệu Ràng buộc
CartID Mã giỏ hàng Int(11) Primary key productID Mã SP Varchar(50) foreign key
SID Mã phiên làm việc
Varchar(70) productName Tên sản phẩm Varchar(100) Not null price giá Varchar(100) Not null
Quantity Số lƣợng Int(11) Not null
Thuộc tính Giải thích Kiểu dữ liệu Ràng buộc catID Mã thương hiệu Int(11) Primary key catName Tên danh mục Varchar(60) Not null
Bảng 5: bảng danh mục sản phẩm
Thuộc tính Giải thích Kiểu dữ liệu Ràng buộc
Id Mã khách hàng Int(11) Primary key
Name Tên khách hàng Varchar(255) Not null
Address Địa chỉ Varchar(255) Not null
Phone Số điện thoại Varchar(30) Not null
Password Mật khẩu Varchar(255) Not null zipcode Mã bưu chính Varchar(30) Not null
Thuộc tính Giải thích Kiểu dữ liệu Ràng buộc
Id Mã đơn hàng Int(11) Primary key productId Mã sản phẩm Int(11) foreign key productName Tên sản phẩm Varchar(255) Not null
CustomerId Mã khách hàng Int(11) foreign key quantity Số lƣợng Int(11) Not null
Image Hình ảnh SP Varchar(255) status Trạng thái ĐH Int(11) Not null
Date_order Ngày mua hàng datetime
Thuộc tính Giải thích Kiểu dữ liệu Ràng buộc productId Mã sản phẩm Int(11) Primary key productName Tên sản phẩm Varchar(255) Not null Product_code Code sản phẩm Varchar(50) Not null Product quantity
Product_soldout SP đã bán Varchar(50) Not null Product_remain SP tồn kho Varchar(50) Not null
CatID Mã danh mục Int(11) foreign key
BrandID Mã thương hiệu Int(11) foreign key
Product_desc Mô tả SP Text
Type Kiểu SP(nổi bật hay không nổi bật)
Price Giá sản phẩm Varchar(255) Not null
Image Hình ảnh Sp Varchar(255)
Thuộc tính Giải thích Kiểu dữ liệu Ràng buộc sliderID Mã slider Int(11) Primary key
SliderName Tên slider Varchar(50) Not null
Slider_img Hình ảnh slider Varchar(70) Not null
Type Kiểu slider(nổi bật hay không nổi bật)
Thuộc tính Giải thích Kiểu dữ liệu Ràng buộc
Id_warehouse Mã kho hàng Int(11) Primary key
Id_sản phẩm Mã sản phẩm Int(11) foreign key
Sl_nhap Số lƣợng nhập Varchar(70) Not null
Sl_ngay nhập Ngày nhập timestamp Not null
Thuộc tính Giải thích Kiểu dữ liệu Ràng buộc
Id Mã sp yêu thích Int(11) Primary key customerId Mã khách hàng Int(11) foreign key productId Mã sản phâm Int(11) foreign key
ProductName Tên sản phẩm Varchar(255) Not null
Price Gía sản phẩm Varchar(255) Not null
Image Hình ảnh sp Varchar(255)
Bảng 11: bảng sản phẩm yêu thích
TRIỂN KHAI HỆ THỐNG
Thiết kế giao diện
Hình 24: Giao diện trang chủ
4.2 Giao diện trang sản phẩm
Hình 25: Giao diện trang sản phẩm
Hình 26: Giao diện trang sản phẩm
4.3 Giao diện trang chi tiết sản phẩm
Hình 27: Giao diện trang chi tiết sản phẩm
Hình 28: Giao diện trang chi tiết sản phẩm
4.4 Giao diện trang giỏ hàng
Hình 29: Giao diện trang giỏ hàng
4.5 Giao diện trang thanh toán
Hình 30: Giao diện trang thanh toán
4.6 Giao diện trang đăng nhập và đăng ký
Hình 31: Giao diện trang đăng nhập và đăng ký
4.7 Giao diện trang thông tin của khách hàng
Hình 32: Giao diện trang thông tin khách hàng
4.8 Giao diện trang xem chi tiết đơn hàng đã đặt
Hình 33: Giao diện trang xem chi tiết đơn hàng đã đặt
4.9 Giao diện trang tìm kiếm sản phẩm
Hình 34: Giao diện trang tìm kiếm sản phẩm
4.10 Giao diện trang chủ trang quản trị admin
Hình 35: Giao diện trang chủ admin
4.11 Giao diện trang danh mục sản phẩm
Hình 36: Giao diện trang danh mục sản phẩm
4.12 Giao diện trang thương hiệu sản phẩm
Hình 37: Giao diện trang thương hiệu sản phẩm
4.13 Giao diện trang thêm sản phẩm
Hình 38: Giao diện trang thêm sản phẩm
4.14 Giao diện trang liệt kê tất cả các sản phẩm
Hình 39: Giao diện trang liệt kê tất cả các sản phẩm
Hình 40: Giao diện trang liệt kê tất cả các sản phẩm
4.15 Giao diện trang quản lý kho hàng
Hình 41: Giao diện trang quản lý kho hàng
4.16 Giao diện trang tìm kiếm sản phẩm
Hình 42: Giao diện trang tìm kiếm sản phẩm
4.17 Giao diện trang xem thông tin khách hàng về đơn hàng đã đặt mua
Hình 43: giao diện trang xem thông tin khách hàng về đơn hàng đã đặt mua
4.18 Giao diện trang quản lý đơn đặt hàng
Hình 44: Giao diện trang quản lý đơn đặt hàng