10/10/2018, 09:46
Hỏi giải thuật giỏ hàng trong php??
em đang làm 1 trang bán hàng bằng php + SQL server 2005
Em đang kẹt chỗ giỏ hàng, em mún khi người mua vào xem sản phẩm ,
xong rồi bấm "bỏ vào giỏ hàng", thì truyền session đó vào giỏ hàng,
tiếp theo, người mua bấm vào "mua tiếp" thì quay ra trang sản phẩm để chọn tiếp ,
sau đó người mua chọn sản phẩm thứ 2 , thì khi đó làm sao để hiển thị cả 2 sản phẩm 1 và 2 mà khách hàng đã chọn,
em đã dùng cách là tạo 1 table giỏ hàng trong csdl, mỗi khi gọi trang giỏ hàng thì nó add cái session Mã sản phẩm vào table giỏ hàng, và sau đó em select nó ra , thì đúng là nó ra hết mấy cái sp 1 và 2, nhưng mỗi khi gọi thì nó cứ add mãi, ví dụ em có 1 chỗ để xóa sản phẩm trong giỏ hàng, bấm xóa xong, nó gọi lại trang giỏ hàng, thì nó add tiếp cái session hồi nãy, cứ vậy hoài....em hết biết code làm sao lun,
mấy anh có giải thuật nào khác hoặc code để giải chỗ này thì cho em với nha, tks nhìu,
và code nào để insert mấy cái sản phẩm đó vào hóa đơn vậy, ví dụ như em có 2 cái table hóa đơn, là hóa đơn chi tiết để lưu chi tiết mỗi sản phẩm và số lượng, và 1 hóa đơn chính để lưu thông tin người mua , ngày đặt, ngày giao, tổng tiền từ các hóa đơn chi tiết cộng lại. làm
Làm sao để lưu từng sản phẩm vào mỗi hóa đơn chi tiết dc, vd : em mua 5 cái máy tính khác nhau, thì em sẽ có 5 cái hóa đơn chi tiết, và 1 hóa đơn chính có tổng tiền của 5 cái máy , xin giúp em ạh , bí quá rồi mới hỏi đấy TT_TT
Em đang kẹt chỗ giỏ hàng, em mún khi người mua vào xem sản phẩm ,
xong rồi bấm "bỏ vào giỏ hàng", thì truyền session đó vào giỏ hàng,
tiếp theo, người mua bấm vào "mua tiếp" thì quay ra trang sản phẩm để chọn tiếp ,
sau đó người mua chọn sản phẩm thứ 2 , thì khi đó làm sao để hiển thị cả 2 sản phẩm 1 và 2 mà khách hàng đã chọn,
em đã dùng cách là tạo 1 table giỏ hàng trong csdl, mỗi khi gọi trang giỏ hàng thì nó add cái session Mã sản phẩm vào table giỏ hàng, và sau đó em select nó ra , thì đúng là nó ra hết mấy cái sp 1 và 2, nhưng mỗi khi gọi thì nó cứ add mãi, ví dụ em có 1 chỗ để xóa sản phẩm trong giỏ hàng, bấm xóa xong, nó gọi lại trang giỏ hàng, thì nó add tiếp cái session hồi nãy, cứ vậy hoài....em hết biết code làm sao lun,
mấy anh có giải thuật nào khác hoặc code để giải chỗ này thì cho em với nha, tks nhìu,
và code nào để insert mấy cái sản phẩm đó vào hóa đơn vậy, ví dụ như em có 2 cái table hóa đơn, là hóa đơn chi tiết để lưu chi tiết mỗi sản phẩm và số lượng, và 1 hóa đơn chính để lưu thông tin người mua , ngày đặt, ngày giao, tổng tiền từ các hóa đơn chi tiết cộng lại. làm
Làm sao để lưu từng sản phẩm vào mỗi hóa đơn chi tiết dc, vd : em mua 5 cái máy tính khác nhau, thì em sẽ có 5 cái hóa đơn chi tiết, và 1 hóa đơn chính có tổng tiền của 5 cái máy , xin giúp em ạh , bí quá rồi mới hỏi đấy TT_TT
Bài liên quan
function store($action=null, $id=null){
$cart = $_SESSION***91;'Cart'***93;;
switch ($action) {
case 'add':
if ($cart) {
$cart .= ','.$id;
} else {
$cart = $id;
}
break;
case 'delete':
if ($cart) {
$items = explode(',',$cart);
$newcart = '';
foreach ($items as $item) {
if ($id != $item) {
if ($newcart != '') {
$newcart .= ','.$item;
} else {
$newcart = $item;
}
}
}
$cart = $newcart;
}
break;
case 'update':
if ($cart) {
$newcart = '';
foreach ($_POST as $key=>$value) {
if (stristr($key,'qty')) {
$id = str_replace('qty','',$key);
$items = ($newcart != '') ? explode(',',$newcart) : explode(',',$cart);
$newcart = '';
foreach ($items as $item) {
if ($id != $item) {
if ($newcart != '') {
$newcart .= ','.$item;
} else {
$newcart = $item;
}
}
}
for ($i=1;$i<=$value;$i++) {
if ($newcart != '') {
$newcart .= ','.$id;
} else {
$newcart = $id;
}
}
}
}
}
$cart = $newcart;
break;
}
$_SESSION***91;'Cart'***93; = $cart;
}
store('add', 1); // 1 là ID của sản phẩm
function getContents()
{
$contents = array();
$cart = $_SESSION***91;'Cart'***93;;
if($cart)
{
$items = explode(',',$cart);
$contents = array();
foreach ($items as $item)
{
$contents***91;$item***93; = (isset($contents***91;$item***93;)) ? $contents***91;$item***93; + 1 : 1;
}
}
return $contents;
}
$cart = getContents();
foreach ($cart as $product_id=>$qty) {
// Lấy thông tin sản phẩm dựa vào product_id và hiển thị ra
}
+chọn một món hàng : $_SESSION[id_mon_hang].="giả sử id là 1";
khi có 3 món hàng chuỗi sẽ như thế này: $_SESSION[id_mon_hang]="1,2,3";
+ viết sql
$sql="select * from hang where id_mon_hang in (".$_SESSION[id_mon_hang].");";
-Cách không bình thường mà tôi hay làm là ....