10/10/2018, 09:26
Hỏi về shopping cart trong PHP
Mình có một thắc mắc muốn nhờ các bạn giúp đỡ.
Mình đang làm 1 shopping cart nhưng không biết làm thế nào để có thể update để tính giá trị của giỏ hàng. Quy trinhg của mình như sau.
mỗi khi guest click vào link "add to cart" thì mình kiểm tra xem session(cart) đã tồn tại chưa,nếu chưa thì tạo session(cart) mới và gán giá trị của nó=mã SP, nếu rồi thì thêm mã sản phẩm đó vào giá trị biến session(cart). Sau đó đọc trong cơ sở DL các SP có mã như trong biến sesion(cart) đó và đưa ra tên SP kèm theo một ô textbox để cho guest nhập số lượng sản phẩm họ muốn mua vào. Tuy nhiện mình không biết làm cách nào để có thể cập nhập được số sản phẩm đó. Ví dụ như khi người dùng chọn mua 3SP thì sẽ tính tiền =cách lấy giá SP*3. Vấn đề là không biết cách nào lấy được số 3 đó vì cứ mỗi sản phẩm lại đưa ra 1 ô textbox có tên khác nhau và mình thì ko thể sử dụng $_POST với các ô textbox đó vì tên của chúng không cố định.
Mình đã tìm thử các mã nguồn trên hotscript nhưng hoặc là chúng sử dụng các template hoặc các class rất khó hiểu, hoặc đưa cả nội dung của trang web nên mình không thể nào tìm hiểu được. Bạn nào có thể giúp mình với ko? Mình mới đang nghiện cứu PHP nên chưa hiểu lắm về OOP, các bạn có thể chỉ giúp về PHP một cách đơn giản nhất được không?
Mình đang làm 1 shopping cart nhưng không biết làm thế nào để có thể update để tính giá trị của giỏ hàng. Quy trinhg của mình như sau.
mỗi khi guest click vào link "add to cart" thì mình kiểm tra xem session(cart) đã tồn tại chưa,nếu chưa thì tạo session(cart) mới và gán giá trị của nó=mã SP, nếu rồi thì thêm mã sản phẩm đó vào giá trị biến session(cart). Sau đó đọc trong cơ sở DL các SP có mã như trong biến sesion(cart) đó và đưa ra tên SP kèm theo một ô textbox để cho guest nhập số lượng sản phẩm họ muốn mua vào. Tuy nhiện mình không biết làm cách nào để có thể cập nhập được số sản phẩm đó. Ví dụ như khi người dùng chọn mua 3SP thì sẽ tính tiền =cách lấy giá SP*3. Vấn đề là không biết cách nào lấy được số 3 đó vì cứ mỗi sản phẩm lại đưa ra 1 ô textbox có tên khác nhau và mình thì ko thể sử dụng $_POST với các ô textbox đó vì tên của chúng không cố định.
Mình đã tìm thử các mã nguồn trên hotscript nhưng hoặc là chúng sử dụng các template hoặc các class rất khó hiểu, hoặc đưa cả nội dung của trang web nên mình không thể nào tìm hiểu được. Bạn nào có thể giúp mình với ko? Mình mới đang nghiện cứu PHP nên chưa hiểu lắm về OOP, các bạn có thể chỉ giúp về PHP một cách đơn giản nhất được không?
Bài liên quan
- Mỗi Item của bạn có 1 mã đúng ko, ko biết database bạn thiết thế thế nào, tôi lấy ví dụ mã của nó là ItemID và đã là Key thì nó phải khác nhau rồi.
- Cái bạn khó khăn là lấy số lượng đúng ko, vì nếu đặt các ô text-box cùng tên thì ko biết lấy thế nào, ko biết phân biệt thế nào. Giả sử tên của các textbox là so_luong vậy bạn đặt thuộc tính name cho textbox là so_luongItemID đi.
Ví dụ bạn chọn được 2 SP có ItemID là 001 và 002 thế thì 2 ô textbox sẽ có tên là so_luong001 và so_luong002 và khi lấy giá trị thì rõ ràng lấy được vì Key là xác định rồi. Chúc bạn thành công.
Trong CSDL của mình bảng SP thì có mã SP(ItemID) và các thông tin của sản phẩm. Bảng Hóa Đơn có Mã Số Hóa Đơn(OrderID), Mã Sản phẩm(ItemID), và số lượng SP(qtty) trong đó ItemID và OrderID hợp thành khóa chính.Đó là CSDL của mình.
Bạn có thể chỉ tiếp cho mình được không ??
$str_items = "";
$str_items = "item01,item02,...,itemN";
- Sau đó người mua hàng sẽ vào xem giỏ hàng (Cart) sẽ hiện ra chi tiết các mặt hàng người đó cần mua. Rất dễ dàng vì đã có chuỗi $str_items thực hiện tách thành mảng (tôi lấy VD là mảng $itemID rồi dùng vòng lặp for Select ra các Item có mã là $itemID[$i] kèm theo thông tin tên mặt hàng, giá tiền ... và dĩ nhiên cứ 1 SP có 1 ô text-box mà thuộc tính name bạn đặt là
<input type="text" name="qtty<?$itemID[$i]?>" value="1">
Đồng thời thêm 1 thẻ Hidden để lưu mã SP
<input type="text" name="itemID" value="<?$itemID[$i]?>">
Và hiển nhiên bạn đặt ở trước một sản phẩm 1 ô checkbox chứ, để người ta muốn bỏ đi một mặt hàng thì người ta bỏ check. Lấy ví dụ tôi đặt thuộc tính tên ô checkbox này là
<input type="checkbox" name="itemCheck" checked="checked">
Người mua chọn mặt hàng nào thì họ check vào cái ô checkbox đó, như vậy bạn phải viết 1 hàm bằng javascript để lấy chuỗi các itemID mà họ check lại (vì giả sử họ chọn ban đầu 5 SP nhưng chỉ mua có 2).
Và cuối cùng là 1 thẻ hidden để lưu chuỗi các SP mà khách hàng chọn mua.
<input type="hidden" name="items_ok">
Có thể dùng code javascript sau
/*
<script>
function setItems_ok()
{
var str_return = "";
var itemID = document.getElementsByName("itemID");
var itemCheck = document.getElementsByName("itemCheck");
for(var i=0;i<itemID.length;i++)
{
if(itemCheck***91;i***93;.checked==true)
{
if(i==itemID.legnth-1)
str_return += itemID***91;i***93;.value;
else
str_return += itemID***91;i***93;.value + ",";
}
}
document.forms***91;0***93;.items_ok.value = str_return;
}
</script>
*/
Ở trang hóa đơn bạn cần lấy giá trị của biến items_ok được submit từ form.
$items_ok = $POST***91;"items-ok"***93;;
$itemID = explode($items_ok,",");
for($i=0;$i<size($itemID);$i++)
{
//Query database để lấy thông tin của từng thằng itemID***91;$i***93; thôi bạn
//SELECT * FROM tbl_items WHERE itemID = 'itemID***91;$i***93;';
//Lấy ra thông tin mặt hàng, giá tiền
$qtty***91;$i***93; = $POST***91;"qtty".$itemID***91;$i***93;***93;;
//Lấy được số lượng rồi ta nhân với giá tiền thôi
}
Mình làm giỏ hàng nhưng làm không được.
Bạn có thể chỉ chi tiết không?