THIẾT KẾ VÀ LẬP TRÌNH WEB
1
Lập Trình Web
Kỹ thuật giỏ hàng trong PHP
ĐẠI HỌC SÀI GÒN – KHOA CNTT
GV: Trần Đình Nghĩa
THIẾT KẾ VÀ LẬP TRÌNH WEB
2
Nội dung
Cấu trúc dữ liệu & mô hình hoạt động giỏ hàng
Thêm sản phẩm vào giỏ hàng
Hiển thị giỏ hàng
Sửa số lượng sản phẩm
Xóa một sản phẩm hay Xóa toàn bộ giỏ hàng
Ví dụ
Lưu giỏ hàng vào CSDL
THIẾT KẾ VÀ LẬP TRÌNH WEB
3
Cấu trúc dữ liệu cho giỏ hàng
Mỗi khách truy cập website sẽ có 1 session
riêng biệt
Lưu toàn bộ giỏ hàng vào session thông qua
biến mảng cart
Mỗi phần tử của cart sẽ được truy xuất theo
dạng id ==> value.
Với: id = mã sách, value = số lượng
<?php
session_start();
session_register("cart");
?>
THIẾT KẾ VÀ LẬP TRÌNH WEB
4
Mô hình hoạt động của giỏ hàng
bookdetail.php addcart.php
cart.php
checkout.php
delcart.php
THIẾT KẾ VÀ LẬP TRÌNH WEB
5
Thêm sản phẩm vào giỏ hàng
Khi khách chọn đưa 1 sản phẩm vào giỏ
hàng
$_SESSION[“cart”] sẽ được kiểm tra và tạo nếu
chưa có.
Nếu $_SESSION[“cart”][“id”] chưa có:
$_SESSION[“cart”][“id”] =1
Nếu $_SESSION[“cart”][“id”] đã có:
$_SESSION[“cart”][“id”] ++
THIẾT KẾ VÀ LẬP TRÌNH WEB
6
Thêm sản phẩm vào giỏ hàng
THIẾT KẾ VÀ LẬP TRÌNH WEB
7
Hiển thị giỏ hàng (cart.php)
Trước tiên, ta cần kiểm tra giỏ hàng có hàng?
THIẾT KẾ VÀ LẬP TRÌNH WEB
8
Hiển thị giỏ hàng (cart.php)
Nếu có, ta xây dựng câu lệnh SQL để lấy ra
các sản phẩm có trong giỏ hàng từ CSDL
THIẾT KẾ VÀ LẬP TRÌNH WEB
9
Hiển thị giỏ hàng (cart.php)
Hiển thị từng sản phẩm trong giỏ hàng cùng
với số lượng đặt mua của chúng thông qua
vòng lặp while
THIẾT KẾ VÀ LẬP TRÌNH WEB
10
Hiển thị giỏ hàng (cart.php)
Sau vòng lặp, hiển thị tổng tiền giỏ hàng và
các liên kết cần thiết
THIẾT KẾ VÀ LẬP TRÌNH WEB
11
Sửa số lượng sản phẩm
Số lượng mỗi sản phẩm trong giỏ hàng được
hiển thị bằng mảng TextField có tên qty[]
Khi form trong cart.php được submit (Button
submit có tên submit), các số lượng mới sẽ
được chuyển cho chính trang này
Như vậy, vào đầu trang cart.php, cần kiểm
tra nếu đang được submit, ta sẽ cập nhật số
lượng mới
Việc cập nhật số lượng mới chỉ đơn giản là
ghi đè số lượng mới vào số lượng cũ. Tuy
nhiên, nếu số lượng mới = 0, ta sẽ xóa sản
phẩm này khỏi giỏ hàng
THIẾT KẾ VÀ LẬP TRÌNH WEB
12
Sửa số lượng sản phẩm
THIẾT KẾ VÀ LẬP TRÌNH WEB
13
Xóa một sản phẩm hay Xóa toàn bộ giỏ hàng
Xem xét link Xóa tương ứng với từng sản
phẩm hay link Xóa Bỏ Giỏ Hàng trong
cart.php, ta có trang delcart.php như sau:
THIẾT KẾ VÀ LẬP TRÌNH WEB
14
Ví dụ
masach [1] [5]
$_SESSION[cart] 1 1
masach [1] [5]
$_SESSION[cart] 5 10
THIẾT KẾ VÀ LẬP TRÌNH WEB
15
Lưu giỏ hàng vào CSDL (checkout.php)
Nếu khách chưa đăng nhập, yêu cầu đăng
nhập bằng cách thông báo và chuyển đến
trang login.php
Nếu khách đã đăng nhập, lần lượt thực hiện:
Thêm record mới vào GioHang với các giá trị:
$_SESSION[matv], ngày hiện hành,
DATHANHTOAN=0
Lấy MaGH mới thêm
Lặp qua từng sản phẩm trong $_SESSION[cart],
Lấy giá của sản phẩm $id
Thêm record mới vào CTGH với các giá trị:
$magh, $id, $value, $gia, $gia*$value