(Blogtamsu) - Viết ứng dụng tạo giỏ hàng - shopping cart Ở phần 1 tôi đã trình bày phần hiển thị thông tin sách có trong cơ sở dữ liệu, chu trình t....
Công Nghệ Webblog - Chuyên nhận rip, thiết kế, cung cấp: Template blogspot, template blogger chuẩn SEO, Tối ưu website, tích hợp tin tức, giỏ hàng cho blogger bán hàng...
Viết ứng dụng tạo giỏ hàng - shopping cart
Ở phần 1 tôi đã trình bày phần hiển thị thông tin sách có trong cơ
sở dữ liệu, chu trình thực thi của việc thêm một quyển sách vào giỏ
hàng. Và cơ chế quản lý giỏ hàng của chúng ta như thế nào. Tiếp tục với
phần 2, tôi sẽ trình bày cách quản lý giỏ hàng như chỉnh sửa món hàng,
liệt kê hàng hóa trong giỏ hàng và xóa bỏ từng món hàng hay cả giò hàng
như thế nào. Để có thể hiểu được phần 2. Các bạn vui lòng xem lại
Xây dựng hệ thống quản lý giỏ hàng.
Sau khi đã thêm một món hàng, tại giỏ hàng ta cũng cần phải xử lý để
hiển thị các món hàng đã có trong giỏ. Và như phương pháp ở phần 1,
chúng ta tạm lưu mã sách trong session. (xem lại)
. Vậy ở trang giỏ hàng này, ta sẽ khởi tạo session và sử dụng vòng lặp
duyệt mảng foreach để lặp toàn bộ mã sách đang lưu trong session. Tiếp
tục, ta lại chuyển chúng sang dạng chuỗi bằng hàm implode().
1
2
session_start();
3
foreach($_SESSION['cart'] as$key=>$value)
4
{
5
$item[]=$key;
6
}
7
$str=implode(",",$item);
8
?>
Giả sử lúc này chuỗi của chúng ta sẽ có dạng 7,8,9. Công việc tiếp
theo là kết nối CSDL để liệt kê các sản phẩm có mã như ở trên. Thay vì sử dụng select * from tên_bảng where id= ??. Thì để tối ưu hơn,
tôi sẽ sử dụng phép in trong SQL. Lúc này câu truy vẫn sẽ tương đương:
1
2
$sql="select * from books where id in ('$str') order by id desc";
3
$query=mysql_query($sql);
4
while($row=mysql_fetch_array($query))
5
?>
Tiếp tục, ta lặp toàn bộ thông tin sách bao gồm tên, tác giả, giá
tiền và cả số lượng mà ta đã lưu trong session là $_SESSION['cart'][
'ID_Món_Hàng']. ID_Món_hàng chính là thông tin ta lặp ra từ CSDL
($row[id]).
Bên cạnh đó tại phần số lượng, ta sẽ đưa giá trị lưu ở session ra
textbox (vì tại giỏ hàng, người dùng được phép điều chỉnh số lượng, nên
lúc này ta cần tạo textbox cho họ điều chỉnh). Vì lặp toàn bộ các quyển
sách nên tại tên tên của textbox số lượng ta cũng cần truyền id để nhận
biết số lượng đó thuộc ID của quyển sách nào.
1
2
echo"
So Luong: - ";
3
?>
Chúng ta cũng cho người dùng được phép xóa 1 món hàng nào đó ra
khỏi giỏ hàng của họ. Bằng cách truyền mã quyển sách của từng quyển vào
liên kết delcart.php.
Tại đây, ta cũng cần tính luôn giá tiền của từng quyển sách tương
ứng với số lượng mà họ đã chọn. Như vậy, số lượng là phần ta lưu ở
session, còn giá tiền là phần ta lấy ra từ CSDL ứng với mảng $row
($row['price']).
1
2
echo"
Gia tien cho mon hang: ". number_format($_SESSION['cart'][$row[id]]*$row[price],3) ." VND
";
3
?>
Sau cùng, ta cần tính tổng tiền của toàn bộ sản phẩm có trong giỏ hàng. Bằng cách cộng dồn tổng giá tiền của từng món.
1
2
$total+=$_SESSION['cart'][$row[id]]*$row[price];
3
?>
Phần còn lại, là chúng ta hiển thị giá tiền với đúng định dạng VND của Việt Nam.
1
2
echo"Tong tien cho cac mon hang: ". number_format($total,3)." VND";
3
?>
Đồng thời, ta cũng tạo nút cho phép người dùng cập nhật. Và cho phép người dúng xóa toàn bộ giỏ hàng.
Sau khi thiết lập thành công trang giỏ hàng cơ bản, lúc này ta đã
có thể thêm sách một cách dễ dàng. Tuy nhiên, giả sử trong trường hợp
không có sách thì sao ?. Chúng ta vẫn chưa xét đến trường hợp giỏ hàng
rỗng thì sẽ như thế nào. Vậy khi nào thì giỏ hàng rỗng ?. Đó là khi
session của giỏ hàng không tồn tại Id của quyển sách nào. Cụ thể,
$_SESSION[‘cart'][id]. Khi id không tồn tại trong session này thì cũng
là lúc giỏ hàng không tồn tại.
Vậy trước khi cho hiển thị giỏ hàng, ta cần kiểm tra xem có tồn tại
id nào trong giỏ hàng hay không. Và vì id lưu ở dạng mảng đa chiều, nên
ta cần dùng vòng lặp duyệt mảng foreach.
foreach($_SESSION[‘cart’] as $k=>$v)
Với $k có ý nghĩa tương đương $id quyển sách và $v tương đương là
số lượng của quyển sách trong giỏ hàng. Vậy nếu tồn tại biến $k, thì tức
có nghĩa là trong giỏ hàng có sách.
01
02
$ok=1;
03
if(isset($_SESSION['cart']))
04
{
05
foreach($_SESSION['cart'] as$k=> $v)
06
{
07
if(isset($k))
08
{
09
$ok=2;
10
}
11
}
12
}
13
if($ok== 2)
14
{
15
// code xử lý giỏ hàng ở trên.
16
}
17
?>
Đoạn code này, ta sử dụng biến $ok để làm biến kiểm tra, mặc định
khi load dữ liệu biến $ok sẽ bằng 1. Và khi trong giỏ hàng tồn tại sách
thì chúng ta sẽ thay đổi biến $ok thành 2. Và gọi giỏ hàng như code ở
trên.
Ở phần trên, ta cũng có đề cập khi người dùng tiến hành chỉnh sửa
số lượng từng món hàng đơn lẻ qua textbox và nhấn cập nhận thì hệ thống
sẽ tiến hành chỉnh sửa lại thông tin giỏ hàng. Vậy chúng ta sẽ xử lý như
thế nào cho trương hợp đó.
Nếu chú ý, các bạn sẽ thấy dòng code chứa textbox cho phép người
dùng nhập số lượng có một tham số đặc biêt là name=qty[$row[id]]. Vậy
tham số này được dùng để làm gì ?.
Tham số này, nói cho chúng ta biết số lượng đang hiển thị là thuộc
mã sản phẩm nào. Vậy khi tiến hành cập nhật giỏ hàng ta sẽ kiểm tra, nếu
$qty[$row[id]] mà có giá trị là 0. Tức là người đó muốn xóa bỏ giỏ
hàng. Ngược lại, ta chỉ viêc cập nhật giỏ hàng $id tương ứng với số
lượng nhập ở textbox.
01
02
if(isset($_POST['submit']))
03
{
04
foreach($_POST['qty'] as$key=>$value)
05
{
06
if( ($value== 0) and(is_numeric($value)))
07
{
08
unset ($_SESSION['cart'][$key]);
09
}
10
elseif(($value> 0) and(is_numeric($value)))
11
{
12
$_SESSION['cart'][$key]=$value;
13
}
14
}
15
header("location:cart.php");
16
}
17
?>
Việc xóa món hàng ở trên chỉ đơn giản là hủy bỏ session của id đó.
Việc cập nhật số lượng chỉ đơn giản là gán đè số lượng người nhập (thẻ
value trong textbox) vào số lượng đang lưu trong session.
Vậy code hoàn chỉnh của trang cart.php này sẽ như sau:
01
02
session_start();
03
if(isset($_POST['submit']))
04
{
05
foreach($_POST['qty'] as$key=>$value)
06
{
07
if( ($value== 0) and(is_numeric($value)))
08
{
09
unset ($_SESSION['cart'][$key]);
10
}
11
elseif(($value> 0) and(is_numeric($value)))
12
{
13
$_SESSION['cart'][$key]=$value;
14
}
15
}
16
header("location:cart.php");
17
}
18
?>
19
20
21
Demo Shopping Cart - Created By My Kenny
22
"stylesheet"href="style.css"/>
23
24
25
Demo Shopping Cart
26
27
$ok=1;
28
if(isset($_SESSION['cart']))
29
{
30
foreach($_SESSION['cart'] as$k=> $v)
31
{
32
if(isset($k))
33
{
34
$ok=2;
35
}
36
}
37
}
38
if($ok== 2)
39
{
40
41
echo"";
42
foreach($_SESSION['cart'] as$key=>$value)
43
{
44
$item[]=$key;
45
}
46
$str=implode(",",$item);
47
$connect=mysql_connect("localhost","root","root") ordie("Can not connect database");
Ban khong co mon hang nao trong gio hang Buy Ebook
";
74
echo"";
75
}
76
?>
77
78
Và cuối cùng, khi người dùng nhấn xóa toàn bộ giỏ hàng hay chỉ xóa
một món hàng, ta sẽ gọi tới trang delcart.php. Vậy trang này sẽ xử lý
như thế nào ?.
Tại đây, ta có thể nhận tham số là: $_GET[‘productid'];
Tham số này sẽ là $id mà chúng truyền qua liên kết. Nếu xóa toàn bộ
giỏ hàng, tức ta sẽ truyền cho nó giá trị bằng 0. Lúc này, ta sẽ hủy
toàn bộ $_SESSION[‘cart']. Ngược lại, nếu là một $id cụ thể, thì ta chỉ
xóa món hàng đó mà thôi. $_SESSION[‘cart'][$id].
Như vậy, chúng ta đã hoàn tất việc xây dựng hoàn chỉnh một hệ thống shopping cart đơn giản. Tuy rằng, đây không phải là một bài viết hoàn chỉnh trong việc xây dựng mô hình thương mại điện tử. Nhưng quá đó, phần nào giúp các bạn hiểu và dễ dàng phát triển hệ thống của mình có tổ chức hơn.
Tag: dịch vụ sơn nước , dịch vụ sơn nhà, sơn nhà giá rẻ, sơn nhà đẹp, sơn nhà hồ chí minh, sơn sửa nhà phố, sơn nước uy tin, sơn nước tận nhà, sơn nước tại nhà, sơn nước chất lượng, sơn nhà đẹp, sơn nhà trọn gói, sơn giả đá, sơn giả gỗ,sơn nhà sài gòn, sơn nhà siêu đẹp