Giới thiệu dự án
Thương mại điện tử (E-Commerce) tại khu vực Đông Nam Á đang trải qua giai đoạn tăng trưởng vượt bậc với tốc độ tăng trưởng kép hàng năm (CAGR) đạt trên 18.5%. Tuy nhiên, tại Cộng hòa Dân chủ Nhân dân Lào (CHDCND Lào), việc chuyển đổi số trong lĩnh vực bán lẻ thời trang và đồ thể thao vẫn còn sơ khai. Phần lớn các giao dịch mua sắm trực tuyến hiện nay vẫn phụ thuộc vào mạng xã hội (Facebook, TikTok Shop) hoặc các cửa hàng truyền thống, dẫn đến nhiều bất cập trong quản lý tồn kho, tra cứu nguồn gốc sản phẩm và kiểm soát đơn hàng.
Đề tài khóa luận tốt nghiệp "Xây dựng website Bán quần áo thể thao tại Lào" (LAOS_EA_SPORT) được thực hiện bởi sinh viên Souliphong Sitthixay dưới sự hướng dẫn của thầy Hồ Hữu Linh tại Khoa Toán - Tin, Trường Đại học Quảng Nam. Đề tài tập trung giải quyết bài toán tự động hóa quy trình bán hàng, chuẩn hóa dữ liệu danh mục sản phẩm thể thao và tối ưu hóa trải nghiệm mua sắm phù hợp với thói quen tiêu dùng bản địa tại thị trường Lào.
Mục tiêu của đề tài
- Khảo sát và phân tích: Đánh giá mô hình hoạt động của các hệ thống bán hàng trực tuyến hiện hành (như huyenanh.com, pro-biker), từ đó xác định các đặc thù nghiệp vụ cho phân khúc bán lẻ đồ thể thao tại Lào.
- Thiết kế kiến trúc hệ thống: Xây dựng cơ sở dữ liệu quan hệ (RDBMS) chuẩn hóa bậc 3 (3NF), mô hình hóa quy trình nghiệp vụ thông qua biểu đồ Use Case, Class Diagram và Activity Diagram.
- Hiện thực hóa giải pháp: Lập trình hoàn chỉnh hệ thống thương mại điện tử hai phân hệ (Khách hàng - Client Side và Quản trị - Admin Side) trên nền tảng PHP, MySQL kết hợp JavaScript, jQuery, CSS3 và HTML5.
- Kiểm thử và đánh giá hiệu năng: Triển khai thử nghiệm trên môi trường Localhost (XAMPP Server), đánh giá tính toàn vẹn dữ liệu, tốc độ truy xuất và độ trễ phản hồi của hệ thống.
+-----------------------------------------------------------------------+
| MỤC TIÊU VÀ CHỈ SỐ ĐO LƯỜNG |
+------------------------------------+----------------------------------+
| Chỉ số vận hành (Target Metric) | Giá trị kỳ vọng |
+------------------------------------+----------------------------------+
| Tốc độ tải trang trung bình | < 1.2 giây |
| Thời gian phản hồi truy vấn DB | < 50 ms |
| Độ chính xác đồng bộ giỏ hàng | 100% qua HTTP Session |
| Khả năng chịu tải đồng thời | 150 - 200 CCU trên Localhost |
+------------------------------------+----------------------------------+
Phạm vi và giới hạn
- Phạm vi chức năng: Quản lý danh mục, loại sản phẩm, sản phẩm thể thao đa ảnh, giỏ hàng session, quản lý khuyến mãi, tài khoản phân quyền và xét duyệt đơn hàng.
- Giới hạn hệ thống: Mô hình B2C đơn cửa hàng (Single-vendor), phương thức thanh toán dạng COD/chuyển khoản đối soát thủ công và vận hành thử nghiệm trên môi trường máy chủ nội bộ.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Tại thị trường Lào, các cửa hàng kinh doanh đồ thể thao đối mặt với tình trạng sai lệch tồn kho, thất thoát hóa đơn và phụ thuộc hoàn toàn vào tư vấn viên thủ công. Bảng so sánh dưới đây phân tích khoảng cách công nghệ giữa các phương thức:
| Tiêu chí |
Cửa hàng thể thao truyền thống |
Bán hàng qua Mạng xã hội |
Hệ thống LAOS_EA_SPORT (Đề tài) |
| Quản lý danh mục |
Ghi chép sổ sách/Excel thủ công |
Rời rạc theo bài đăng, khó tìm kiếm |
Phân cấp 2 tầng: Danh mục (danhmuc) & Loại (loaisanpham) |
| Tra cứu tồn kho |
Kiểm đếm trực tiếp tại kho |
Phải nhắn tin hỏi nhân viên |
Tự động hiển thị và trừ số lượng theo thời gian thực |
| Xử lý giỏ hàng |
Khách chọn thủ công |
Chốt đơn qua tin nhắn, dễ sót |
Giỏ hàng Session, cập nhật/xóa tức thời |
| Bảo mật & Phân quyền |
Không có |
Phụ thuộc quyền admin Page |
Phân quyền bảng phanquyen (Admin / Khách hàng) |
| Chi phí vận hành |
Rất cao (mặt bằng, nhân sự) |
Thấp nhưng tỷ lệ rớt đơn cao |
Tối ưu, tự động hóa quy trình 24/7 |
Phân loại yêu cầu người dùng theo mô hình MoSCoW
- Must have (Bắt buộc): Đăng ký/đăng nhập, xem chi tiết sản phẩm đa hình ảnh, tìm kiếm theo tên, quản lý giỏ hàng, đặt hàng thanh toán, CRUD sản phẩm/danh mục/tài khoản cho Quản trị viên.
- Should have (Nên có): Bộ lọc theo khuyến mãi (
khuyenmai), cập nhật thông tin cá nhân, đổi mật khẩu mã hóa, xét duyệt trạng thái đơn hàng.
- Could have (Có thể có): Quản lý hệ thống banner quảng cáo (
banner), bình luận đánh giá chất lượng sản phẩm.
- Won't have (Chưa hỗ trợ): Tích hợp cổng thanh toán trực tiếp ngân hàng BCEL One và định vị đơn hàng GPS thời gian thực.
Thiết kế hệ thống
Hệ thống được thiết kế theo kiến trúc 3 tầng (3-Tier Web Architecture):
- Presentation Layer (Giao diện): HTML5, CSS3 định kiểu bố cục, JavaScript thuần kết hợp jQuery xử lý tương tác DOM, hiệu ứng và điều hướng AJAX.
- Application Logic Layer (Xử lý nghiệp vụ): Ngôn ngữ PHP kịch bản phía máy chủ (Server-Side Scripting) tiếp nhận request qua phương thức GET/POST, thực thi logic kiểm tra phiên đăng nhập và định tuyến URL dạng Routing Parameter (
?act=home, ?act=detail).
- Data Layer (Lưu trữ dữ liệu): Hệ quản trị cơ sở dữ liệu quan hệ MySQL/MariaDB lưu trữ dữ liệu có cấu trúc với ràng buộc toàn vẹn khóa ngoại (Foreign Keys).
+---------------------------------------------------------------------------------+
| KIẾN TRÚC HỆ THỐNG LAOS_EA_SPORT |
+---------------------------------------------------------------------------------+
| CLIENT TIER HTML5 / CSS3 / JavaScript / jQuery Selector & DOM Engine |
| | (HTTP Request / Response) |
| v |
| WEB SERVER TIER Apache HTTP Server (Cổng 80/443) / XAMPP Environment |
| | |
| APPLICATION TIER PHP Script Engine (Session Handling / SQL Query Builder) |
| | (MySQL Protocol / Port 3306) |
| v |
| DATABASE TIER MySQL Relational Database (InnoDB Engine, UTF-8 Unicode) |
+---------------------------------------------------------------------------------+
Ngăn xếp công nghệ (Technology Stack)
- Web Server Engine: Apache 2.4.x / Apache 2.0h tích hợp trong bộ phần mềm XAMPP 7.11.
- Runtime Environment: PHP 7.4.x (Tương thích chuẩn mã nguồn mở Cross-platform).
- Database Management System: MySQL 5.7 / MariaDB 10.4 hỗ trợ lưu trữ bảng dữ liệu InnoDB.
- Client Libraries: jQuery 3.x, Visual Studio Code IDE, CSS Grid & Flexbox.
Thiết kế cơ sở dữ liệu quan hệ (Database Schema)
Cơ sở dữ liệu của hệ thống gồm 8 bảng quan hệ trọng yếu:
-- Cấu trúc bảng Danh mục sản phẩm
CREATE TABLE `danhmuc` (
`MaDM` int(11) NOT NULL AUTO_INCREMENT,
`TenDM` varchar(255) NOT NULL,
PRIMARY KEY (`MaDM`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- Cấu trúc bảng Loại sản phẩm
CREATE TABLE `loaisanpham` (
`MaLSP` int(11) NOT NULL AUTO_INCREMENT,
`TenLSP` varchar(100) NOT NULL,
`HinhAnh` varchar(200) DEFAULT NULL,
`Mota` varchar(200) DEFAULT NULL,
`MaDM` int(11) NOT NULL,
PRIMARY KEY (`MaLSP`),
KEY `fk_loaisp_danhmuc` (`MaDM`),
CONSTRAINT `fk_loaisp_danhmuc` FOREIGN KEY (`MaDM`) REFERENCES `danhmuc` (`MaDM`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- Cấu trúc bảng Khuyến mãi
CREATE TABLE `khuyenmai` (
`MaKM` int(11) NOT NULL AUTO_INCREMENT,
`TenKM` varchar(100) NOT NULL,
`LoaiKM` varchar(20) NOT NULL,
`GiaTriKM` float NOT NULL,
`NgayBD` datetime NOT NULL,
`TrangThai` varchar(70) NOT NULL,
PRIMARY KEY (`MaKM`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- Cấu trúc bảng Sản phẩm thể thao
CREATE TABLE `sanpham` (
`MaSP` int(11) NOT NULL AUTO_INCREMENT,
`MaLSP` int(11) NOT NULL,
`MaDM` int(11) NOT NULL,
`TenSP` varchar(70) NOT NULL,
`DonGia` int(11) NOT NULL,
`SoLuong` int(10) NOT NULL,
`HinhAnh1` varchar(255) NOT NULL,
`HinhAnh2` varchar(255) DEFAULT NULL,
`HinhAnh3` varchar(255) DEFAULT NULL,
`MaKM` int(11) DEFAULT NULL,
`KieuDang` varchar(100) DEFAULT NULL,
`TrangThai` int(11) NOT NULL DEFAULT 1,
`MoTa` text DEFAULT NULL,
`ThoiGian` datetime NOT NULL,
`GiamGiaSP` varchar(200) DEFAULT NULL,
`DonGiaCu` varchar(200) DEFAULT NULL,
PRIMARY KEY (`MaSP`),
KEY `fk_sp_loaisp` (`MaLSP`),
KEY `fk_sp_danhmuc` (`MaDM`),
KEY `fk_sp_khuyenmai` (`MaKM`),
CONSTRAINT `fk_sp_danhmuc` FOREIGN KEY (`MaDM`) REFERENCES `danhmuc` (`MaDM`),
CONSTRAINT `fk_sp_loaisp` FOREIGN KEY (`MaLSP`) REFERENCES `loaisanpham` (`MaLSP`),
CONSTRAINT `fk_sp_khuyenmai` FOREIGN KEY (`MaKM`) REFERENCES `khuyenmai` (`MaKM`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- Cấu trúc bảng Phân quyền
CREATE TABLE `phanquyen` (
`MaQuyen` int(11) NOT NULL AUTO_INCREMENT,
`TenQuyen` varchar(20) NOT NULL,
`ChiTietQuyen` varchar(255) DEFAULT NULL,
PRIMARY KEY (`MaQuyen`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- Cấu trúc bảng Người dùng
CREATE TABLE `nguoidung` (
`MaND` int(11) NOT NULL AUTO_INCREMENT,
`Ho` varchar(20) NOT NULL,
`Ten` varchar(20) NOT NULL,
`GioiTinh` varchar(10) NOT NULL,
`SDT` varchar(20) NOT NULL,
`Email` varchar(50) NOT NULL,
`DiaChi` varchar(100) NOT NULL,
`Phuong` varchar(100) DEFAULT NULL,
`TaiKhoan` varchar(100) NOT NULL UNIQUE,
`MatKhau` varchar(100) NOT NULL,
`MaQuyen` int(11) NOT NULL,
`TrangThai` int(11) NOT NULL DEFAULT 1,
PRIMARY KEY (`MaND`),
KEY `fk_nguoidung_phanquyen` (`MaQuyen`),
CONSTRAINT `fk_nguoidung_phanquyen` FOREIGN KEY (`MaQuyen`) REFERENCES `phanquyen` (`MaQuyen`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- Cấu trúc bảng Hóa đơn đặt hàng
CREATE TABLE `hoadon` (
`MaHD` int(11) NOT NULL AUTO_INCREMENT,
`MaND` int(11) NOT NULL,
`NgayLap` datetime NOT NULL,
`NguoiNhan` varchar(255) NOT NULL,
`SDT` varchar(20) NOT NULL,
`DiaChi` varchar(100) NOT NULL,
`PhuongThucTT` varchar(20) NOT NULL,
`TongTien` float NOT NULL,
`TrangThai` varchar(70) NOT NULL,
PRIMARY KEY (`MaHD`),
KEY `fk_hoadon_nguoidung` (`MaND`),
CONSTRAINT `fk_hoadon_nguoidung` FOREIGN KEY (`MaND`) REFERENCES `nguoidung` (`MaND`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- Cấu trúc bảng Chi tiết hóa đơn
CREATE TABLE `chitiethoadon` (
`MaHD` int(11) NOT NULL,
`MaSP` int(11) NOT NULL,
`SoLuong` int(11) NOT NULL,
`DonGia` float NOT NULL,
PRIMARY KEY (`MaHD`,`MaSP`),
KEY `fk_cthd_sanpham` (`MaSP`),
CONSTRAINT `fk_cthd_hoadon` FOREIGN KEY (`MaHD`) REFERENCES `hoadon` (`MaHD`) ON DELETE CASCADE,
CONSTRAINT `fk_cthd_sanpham` FOREIGN KEY (`MaSP`) REFERENCES `sanpham` (`MaSP`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Implementation và kết quả
Quá trình phát triển hệ thống
Quy trình phát triển phần mềm được chia thành 4 giai đoạn chính với mốc thời gian rõ ràng:
- Giai đoạn 1 (Tuần 1 - 3): Khảo sát nghiệp vụ bán lẻ thực tế, thu thập mẫu giao diện e-commerce thể thao, xây dựng từ điển dữ liệu và cài đặt môi trường máy chủ XAMPP (Apache, MySQL, PHP 7.x).
- Giai đoạn 2 (Tuần 4 - 8): Thiết kế sơ đồ ERD, tạo bảng cơ sở dữ liệu trên phpMyAdmin, viết các module xử lý phía máy chủ bằng PHP (xác thực
$_POST, $_GET, khởi tạo session_start()).
- Giai đoạn 3 (Tuần 9 - 13): Xây dựng giao diện Front-end responsive với CSS và jQuery; tích hợp bộ điều khiển điều hướng
index.php?act=....
- Giai đoạn 4 (Tuần 14 - 16): Kiểm thử hộp đen (Black-box testing), tối ưu hóa các câu lệnh truy vấn SQL JOIN nhiều bảng, hoàn thiện tài liệu khóa luận.
Thuật toán và Module lập trình cốt lõi
1. Cơ chế định tuyến điều khiển (Front Controller Routing Pattern):
Trang chủ index.php đóng vai trò là điểm tiếp nhận trung tâm, lọc tham số act thông qua mảng siêu toàn cục $_GET để điều hướng hiển thị view phù hợp:
<?php
// Khởi tạo phiên làm việc bảo mật
if (session_status() == PHP_SESSION_NONE) {
session_start();
}
require_once("config/db_connect.php");
// Tiếp nhận yêu cầu điều hướng
$action = isset($_GET['act']) ? trim($_GET['act']) : 'home';
switch ($action) {
case 'home':
// Truy vấn danh sách sản phẩm mới nhất kèm thông tin khuyến mãi
$sql = "SELECT sp.*, km.GiaTriKM, km.LoaiKM
FROM sanpham sp
LEFT JOIN khuyenmai km ON sp.MaKM = km.MaKM
WHERE sp.TrangThai = 1
ORDER BY sp.ThoiGian DESC LIMIT 12";
$result = mysqli_query($conn, $sql);
include("views/home.php");
break;
case 'cart_add':
// Xử lý thêm sản phẩm vào mảng giỏ hàng Session
$id = intval($_POST['MaSP']);
$quantity = intval($_POST['SoLuong']);
if ($id > 0 && $quantity > 0) {
if (isset($_SESSION['cart'][$id])) {
$_SESSION['cart'][$id] += $quantity;
} else {
$_SESSION['cart'][$id] = $quantity;
}
header("Location: index.php?act=cart_view");
exit();
}
break;
case 'checkout':
// Kiểm tra quyền đăng nhập trước khi thanh toán
if (!isset($_SESSION['user'])) {
header("Location: index.php?act=login&msg=require_login");
exit();
}
include("views/checkout.php");
break;
default:
include("views/404.php");
break;
}
?>
2. Xử lý đặt hàng và toàn vẹn giao dịch (Transaction Processing):
Khi khách hàng xác nhận giỏ hàng, hệ thống tiến hành ghi dữ liệu đồng thời vào hai bảng hoadon và chitiethoadon, đảm bảo tính toàn vẹn (ACID):
<?php
// Trích xuất xử lý thanh toán đơn hàng
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['btn_order'])) {
$maND = $_SESSION['user']['MaND'];
$nguoiNhan = mysqli_real_escape_string($conn, $_POST['NguoiNhan']);
$sdt = mysqli_real_escape_string($conn, $_POST['SDT']);
$diaChi = mysqli_real_escape_string($conn, $_POST['DiaChi']);
$phuongThucTT = mysqli_real_escape_string($conn, $_POST['PhuongThucTT']);
$tongTien = floatval($_POST['TongTien']);
$ngayLap = date('Y-m-d H:i:s');
$trangThai = "Chờ xét duyệt";
// Khởi tạo Transaction
mysqli_begin_transaction($conn);
try {
$stmtOrder = $conn->prepare("INSERT INTO hoadon (MaND, NgayLap, NguoiNhan, SDT, DiaChi, PhuongThucTT, TongTien, TrangThai) VALUES (?, ?, ?, ?, ?, ?, ?, ?)");
$stmtOrder->bind_param("isssssds", $maND, $ngayLap, $nguoiNhan, $sdt, $diaChi, $phuongThucTT, $tongTien, $trangThai);
$stmtOrder->execute();
$maHD = $conn->insert_id;
// Lưu chi tiết từng sản phẩm trong giỏ hàng
$stmtDetail = $conn->prepare("INSERT INTO chitiethoadon (MaHD, MaSP, SoLuong, DonGia) VALUES (?, ?, ?, ?)");
foreach ($_SESSION['cart'] as $maSP => $soLuong) {
$queryPrice = mysqli_query($conn, "SELECT DonGia FROM sanpham WHERE MaSP = $maSP");
$rowPrice = mysqli_fetch_assoc($queryPrice);
$donGia = $rowPrice['DonGia'];
$stmtDetail->bind_param("iiid", $maHD, $maSP, $soLuong, $donGia);
$stmtDetail->execute();
// Cập nhật giảm tồn kho tương ứng
mysqli_query($conn, "UPDATE sanpham SET SoLuong = SoLuong - $soLuong WHERE MaSP = $maSP");
}
// Commit transaction khi toàn bộ dữ liệu hợp lệ
mysqli_commit($conn);
unset($_SESSION['cart']); // Xóa giỏ hàng
echo "<script>alert('Đặt hàng thành công! Mã đơn: $maHD'); window.location.href='index.php';</script>";
} catch (Exception $e) {
mysqli_rollback($conn);
echo "<script>alert('Lỗi đặt hàng: " . $e->getMessage() . "');</script>";
}
}
?>
Kiểm thử và đánh giá kết quả
Hệ thống đã trải qua 45 ca kiểm thử chức năng (Functional Test Cases) bao quát mọi Use Case từ Client đến Admin.
| Nhóm chức năng |
Số lượng Test Case |
Đạt (Passed) |
Lỗi (Failed) |
Tỷ lệ thành công (%) |
| Xác thực & Người dùng |
8 |
8 |
0 |
100% |
| Tìm kiếm & Bộ lọc |
7 |
7 |
0 |
100% |
| Giỏ hàng & Đặt hàng |
12 |
12 |
0 |
100% |
| CRUD Sản phẩm & Danh mục |
10 |
10 |
0 |
100% |
| Quản lý Khuyến mãi & Đơn hàng |
8 |
8 |
0 |
100% |
| Tổng cộng |
45 |
45 |
0 |
100% |
Hiệu năng thực nghiệm (Performance Benchmark)
- Thời gian phản hồi trang chủ (
/LAOS_EA_SPORT/?act=home): Trung bình 0.85s (dưới 15 kết nối đồng thời).
- Thời gian xử lý giao dịch đơn hàng: 120ms từ thời điểm nhấn nút Submit đến khi nhận thông báo phản hồi.
- Khảo sát độ hài lòng người dùng (UAT): Tiến hành khảo sát thử nghiệm trên 30 sinh viên tại Đại học Quảng Nam, đạt điểm trung bình 4.58/5.0 về tính dễ sử dụng và tốc độ hiển thị hình ảnh sản phẩm.
Đổi mới và đóng góp
- Chuẩn hóa quy trình thương mại điện tử chuyên biệt cho đồ thể thao: Đề tài đã chuyển dịch thành công mô hình kinh doanh truyền thống tại Lào sang mô hình số hóa tập trung, giảm thiểu 85% thời gian chốt đơn so với việc giao dịch thủ công qua tin nhắn.
- Cấu trúc dữ liệu sản phẩm linh hoạt: Bảng
sanpham tích hợp 3 trường ảnh chi tiết (HinhAnh1, HinhAnh2, HinhAnh3) cùng trường kiểu dáng (KieuDang), giải quyết triệt để yêu cầu hiển thị trực quan các góc cạnh và phom dáng của trang phục thể thao.
- Mô hình tính toán khuyến mãi động: Liên kết trực tiếp giữa bảng
sanpham và khuyenmai cho phép quản trị viên áp dụng giảm giá trực tiếp theo phần trăm hoặc trừ tiền mặt mà không làm sai lệch giá gốc lưu vết (DonGiaCu).
- Tiết kiệm tài nguyên và tính tương thích cao: Ứng dụng công nghệ PHP kết hợp jQuery giúp hệ sinh thái vận hành mượt mà trên các gói lưu trữ phần cứng tiêu chuẩn mà không đòi hỏi chi phí đầu tư hạ tầng máy chủ phức tạp.
Ứng dụng thực tế và triển khai
Kịch bản triển khai thực tế (Real-World Use Cases)
- Chuỗi cửa hàng đồ thể thao tại Thủ đô Viêng Chăn: Triển khai làm cổng thông tin giới thiệu sản phẩm chính thức, quản lý tập trung nhiều chi nhánh thông qua cơ sở dữ liệu chung.
- Các câu lạc bộ thể thao địa phương: Ứng dụng hệ thống để phân phối đồng phục, áo thi đấu và phụ kiện luyện tập trực tiếp đến hội viên.
+---------------------------------------------------------------------------------+
| LỘ TRÌNH TRIỂN KHAI HỆ THỐNG (ROADMAP) |
+---------------------------------------------------------------------------------+
| Giai đoạn 1: Chuẩn bị máy chủ VPS Linux (Ubuntu Server 20.04 LTS / Nginx / PHP) |
| Giai đoạn 2: Import cơ sở dữ liệu MySQL (`LAOS_EA_SPORT.sql`), cấu hình UTF-8 |
| Giai đoạn 3: Cấu hình Virtual Host và chứng chỉ SSL/TLS miễn phí qua Let's Encrypt |
| Giai đoạn 4: Đào tạo nhân viên quản trị kho hàng, chạy thử nghiệm UAT 14 ngày |
+---------------------------------------------------------------------------------+
Phân tích hiệu quả đầu tư (Cost-Benefit Analysis)
- Chi phí phát triển: ~0 USD chi phí bản quyền phần mềm nhờ khai thác 100% nền tảng mã nguồn mở (XAMPP, Apache, MySQL, PHP, Visual Studio Code).
- Chi phí vận hành: Dự kiến chỉ từ 5 - 10 USD/tháng cho gói Cloud VPS hoặc Shared Hosting.
- Thời gian hoàn vốn (ROI): Ước tính từ 4 - 6 tháng thông qua việc giảm bớt 1 - 2 nhân viên tư vấn chốt đơn và cắt giảm thất thoát tồn kho.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật
- Hệ thống xây dựng trên mô hình nguyên khối (Monolithic Architecture), mã nguồn PHP thuần nhúng trực tiếp trong HTML nên khả năng bảo trì và mở rộng phân tán chưa tối ưu bằng các Framework hiện đại (Laravel, CodeIgniter).
- Chưa tích hợp API cổng thanh toán trực tuyến tự động qua mã QR Ngân hàng BCEL One (Lào) hay MoMo/VNPay (Việt Nam).
- Mật khẩu người dùng trong bảng
nguoidung cần được nâng cấp áp dụng thuật toán băm bảo mật tiêu chuẩn (password_hash với thuật toán BCRYPT).
Hướng phát triển trong tương lai
- Tái cấu trúc mã nguồn theo mô hình chuẩn MVC (Model-View-Controller) tách biệt hoàn toàn tầng dữ liệu và tầng hiển thị.
- Xây dựng hệ thống RESTful API phục vụ kết nối với ứng dụng di động đa nền tảng (Flutter / React Native).
- Tích hợp dịch vụ thông báo đơn hàng tự động qua Email (SMTP) và SMS Brandname.
Đối tượng hưởng lợi
- Sinh viên ngành Công nghệ thông tin: Tài liệu tham khảo toàn diện về phương pháp luận phân tích thiết kế hệ thống thương mại điện tử, cách vẽ biểu đồ Use Case/Lớp và kỹ thuật lập trình PHP/MySQL.
- Lập trình viên Web cơ bản: Nắm vững cấu trúc kết nối cơ sở dữ liệu, xử lý Session giỏ hàng và kỹ thuật xây dựng hệ thống Admin Dashboard không dùng framework cồng kềnh.
- Chủ doanh nghiệp vừa và nhỏ tại Lào: Sở hữu giải pháp mẫu để triển khai website bán hàng với ngân sách tối thiểu nhưng đạt hiệu quả vận hành thực tế cao.
- Giảng viên và nhà nghiên cứu: Dữ liệu thực nghiệm về khảo sát nhu cầu thương mại điện tử tại thị trường các quốc gia đang phát triển.
Câu hỏi thường gặp
1. Cấu hình phần cứng tối thiểu để triển khai website là gì?
Máy chủ Web chỉ cần cấu hình tối thiểu 1 vCPU, 1GB RAM và 10GB dung lượng lưu trữ SSD; hỗ trợ hệ điều hành Linux (Ubuntu/CentOS) hoặc Windows Server có cài đặt môi trường LAMP/WAMP/XAMPP.
2. Làm thế nào để khắc phục xung đột cổng 80 khi khởi chạy Apache trên XAMPP?
Khi gặp lỗi không Start được Apache do phần mềm khác (như Skype, IIS) chiếm dụng cổng 80/443, vào file cấu hình httpd.conf đổi Listen 80 thành Listen 8080, và trong httpd-ssl.conf đổi Listen 443 thành Listen 4433.
3. Hệ thống có cơ chế ngăn chặn tấn công SQL Injection như thế nào?
Hệ thống sử dụng hàm lọc chuỗi mysqli_real_escape_string() và ép kiểu dữ liệu đầu vào (intval(), floatval()). Để nâng cấp bảo mật tối đa, mã nguồn có thể chuyển đổi hoàn toàn sang kỹ thuật Prepared Statements với thư viện PDO.
4. Dữ liệu giỏ hàng được lưu trữ ở đâu và có bị mất khi tắt trình duyệt không?
Dữ liệu giỏ hàng được quản lý trong mảng siêu toàn cục $_SESSION['cart'] lưu trữ trên bộ nhớ máy chủ (Server Memory). Phiên làm việc sẽ tự động xóa sau khi người dùng đặt hàng thành công hoặc khi hết thời gian session.gc_maxlifetime (mặc định 24 phút).
5. Website có hỗ trợ giao diện đa ngôn ngữ (Lào - Việt - Anh) không?
Kiến trúc cơ sở dữ liệu đã được mã hóa theo bảng mã chuẩn utf8_general_ci, cho phép hiển thị chính xác ký tự tiếng Lào (Lao Script) và tiếng Việt có dấu. Hệ thống có thể mở rộng cơ chế đa ngôn ngữ thông qua các tệp mảng từ điển cấu hình lang_la.php, lang_vn.php.
Kết luận
Đề tài khóa luận "Xây dựng website Bán quần áo thể thao tại Lào" của sinh viên Souliphong Sitthixay đã hoàn thành xuất sắc các mục tiêu đặt ra: từ việc nghiên cứu tổng quan công nghệ Web (PHP, MySQL, XAMPP, JavaScript, CSS), phân tích thiết kế hệ thống với đầy đủ các đặc tả Use Case, cho đến hiện thực hóa thành công một sản phẩm website e-commerce hoàn chỉnh và trực quan.
Giải pháp không chỉ chứng minh tính khả thi cao về mặt kỹ thuật mà còn mở ra hướng đi thực tiễn trong việc thúc đẩy chuyển đổi số ngành bán lẻ thời trang thể thao tại Lào, tạo nền tảng vững chắc cho các nghiên cứu và ứng dụng nâng cao tiếp theo.