Chào các bạn ở phần trước mình đã thực hiện công việc hiển thị thông tin của những cuốn sách trong CSDL và quy trình thực thi việc thêm 1 cuốn sách vào trong giỏ hàng cũng như cách quản lý giỏ hàng. Ở phần này chúng ta sẽ cùng tìm hiểu về phương thức chỉnh sửa, liệt kê hàng hóa có trong giỏ cũng như xóa bỏ món hàng khỏi giỏ hàng như thế nào trong PHP.

Phần 2: Cách tạo hệ thống quản lý giỏ hàng

Sau khi đã thêm món hàng vào giỏ, ta sẽ cần phải xử lý để cho các món hàng trong giỏ có thể hiển thị. Cũng giống với phương pháp ở phần 1 thì ta sẽ tạm lưu mã sách bên trong phiên. Vì thế ở trong giỏ hàng này ta phải tiếp tục khởi tạo session và dùng vòng lặp để duyệt mảng foreach để có thể lặp tất cả các mã sách đang được lưu ở trong session. Tiếp đến bạn cần phải di chuyển chúng sang hết dạng chuỗi với hàm implode().

<?php
session_start();
foreach($_SESSION['cart'] as $key=>$value)
{
 $item[]=$key;
}
$str=implode(",",$item);
?>

Ví dụ lúc này chuỗi của ta đang ở dạng 7,8,9. Thì việc tiếp theo đó là kết nối cơ sở dữ liệu để có thể liệt kê được những sản phẩm có mã như trên. Thay vì việc dùng select * from tên_bảng where id= ?? thì để có thể tối ưu hơn bạn nên dùng phép in trong SQL. Ở đoạn này thì câu truy vấn sẽ là:

<?php
$sql="select * from books where id in ('$str') order by id desc";
$query=mysql_query($sql);
while($row=mysql_fetch_array($query))
?>

Sau đó, bạn sẽ cần phải lặp lại tất cả các thông tin sách như là tên của tác giả, giá sách cũng như số lượng mà bạn đã lưu bên trong session như là $_SESSION[‘cart’][ ‘ID_Món_Hàng’]. ID_Món_hàng cũng chính là thông tin được lặp ra từ database ($row[id]).

Ngoài ra ở phần số lượng bạn cần đưa giá trị trong session ra ngoài textbox (tại ở trong giỏ thì người dùng sẽ được phép chỉnh lại số lượng, do đó lúc này ta sẽ cần phải tạo textbox để họ điều chỉnh). Bởi vì lặp lại tất cả các cuốn sách do đó ở tên textbox số lượng bạn cũng sẽ phải truyền ID để có thể biết được ID đó là cuốn nào.

<?php
echo "<p align='right'>So Luong: <input type='text' name='qty[$row[id]]' size='5' value='{$_SESSION['cart'][$row[id]]}' /> - ";
?>

Ta cũng đã cho khách hàng có quyền được xóa món hàng nào đó ra khỏi giỏ hàng bằng cách truyền mã cuốn sách của chúng ta vào trong liên kết delcart.php

<?php
echo "<a href='delcart.php?productid=$row[id]'>Xoa Sach Nay</a></p>";
?>

Ở đây ta cần phải tính giá tiền của từng cuốn sách sao cho tương ứng số lượng ta đã chọn. Như thế thì số lượng ở phần ta đã lưu trong session còn giá trị sẽ lấy từ CSDL tương ứng với mảng $row ($row[‘price’]).

<?php
echo "<p align='right'> Gia tien cho mon hang: ". number_format($_SESSION['cart'][$row[id]]*$row[price],3) ." VND</p>";
?>

Cuối cùng bạn cần phải tính thử xem tổng tiền các sp trong giỏ là bao nhiêu. Bằng phép cộng dồn giá tiền từng mặt hàng lại.

<?php
$total+=$_SESSION['cart'][$row[id]]*$row[price];
?>

Phần tiếp theo ta sẽ hiển thị giá tiền theo đơn vị tiền tệ VNĐ

<?php
echo "<b>Tong tien cho cac mon hang: <font color='red'>". number_format($total,3)." VND</font></b>";
?>

Song song với đó, ta sẽ tạo nút để cho phép khách hàng được cập nhật cũng như xóa giỏ hàng.

<?php
echo "<input type='submit' name='submit' value='Cap Nhat Gio Hang' />";
echo "<div class='pro' align='center'>";
echo "<b><a href='index.php'>Mua Sach Tiep</a> - <a href='delcart.php?productid=0'>Xoa Bo Gio Hang</a></b>";
?>

Code đầy đủ

<?php
echo "<form action='cart.php' method='post'>";
foreach($_SESSION['cart'] as $key=>$value)
{
 $item[]=$key;
}
$str=implode(",",$item);
$connect=mysql_connect("localhost","root","root") or die("Can not connect database");
mysql_select_db("shop",$connect);
$sql="select * from books where id in ($str)";
$query=mysql_query($sql);
while($row=mysql_fetch_array($query))
{
 echo "<div class='pro'>";
 echo "<h3>$row

Lorem ipsum dolor sit amet...

</h3>"
;
 echo "Tac gia: $row[author]- Gia: ".number_format($row[price],3)." VND<br />";
 echo "<p align='right'>So Luong: <input type='text' name='qty[$row[id]]' size='5' value='{$_SESSION['cart'][$row[id]]}'> - ";
 echo "<a href='delcart.php?productid=$row[id]'>Xoa Sach Nay</a></p>";
 echo "<p align='right'> Gia tien cho mon hang: ". number_format($_SESSION['cart'][$row[id]]*$row[price],3) ." VND</p>";
 echo "</div>";
 $total+=$_SESSION['cart'][$row[id]]*$row[price];
}
echo "<div class='pro' align='right'>";
echo "<b>Tong tien cho cac mon hang: <font color='red'>". number_format($total,3)." VND</font></b>";
echo "</div>";
echo "<input type='submit' name='submit' value='Cap Nhat Gio Hang' />";
echo "<div class='pro' align='center'>";
echo "<b><a href='index.php'>Mua Sach Tiep</a> - <a href='delcart.php?productid=0'>Xoa Bo Gio Hang</a></b>";
echo "</div>";
?>

Sau khi bạn đã thiết lập thành công giỏ hàng căn bản thì bạn đã có thể thêm sách vào một cách đơn giản. Nhưng nếu ví dụ trong trường hợp sách không có thì làm thế nào? Ta vẫn còn chưa xét đến trường hợp nếu giỏ hàng rỗng. Đó chính là lúc mà phiên của giỏ hàng không còn tồn tại bất kì ID của cuốn sách nào. Cụ thể sẽ là $_SESSION[‘cart’][id]. Khi mà ID không còn tồn tại trong phiên thì tức là lúc đó giỏ hàng cũng không tồn tại.

20_01

Vậy thì trước khi hiển thị giỏ ta sẽ phải kiểm tra lại xem ID có tồn tại hay không và nó lưu dưới dạng mảng đa chiều thì ta sẽ sử dụng vòng lặp duyệt mảng foreach.

foreach($_SESSION[‘cart’] as $k=>$v)

Với $k nghĩa là tương đương với $id của cuốn sách và $v chính là số lượng cuốn sách trong giỏ. Vì thế nếu như tồn tại $k thì trong giỏ hàng sẽ có sách.

Tải mã nguồn của bài hôm nay tại link sau

Rate this post