php - 如何将产品添加到购物车包括尺寸和数量 php
问题描述
我想将具有选定尺寸和数量的产品添加到购物车。我已经编写了这些代码,但我的问题是:首先,它是否安全且正确地工作?然后如果用户将一个特定产品(product_id)两次添加到购物车(在两个不同的请求中),我该如何添加两个请求的数量?最后,我应该如何处理一个产品 ID 的不同尺寸?
if (isset($_POST['add2cart'])){
if (is_numeric($_POST['proId']) and is_numeric($_POST['count']) and ($_POST['count'])>0 and strlen($_POST['size'])<5) {
$proId= $_POST['proId'];
$proCount = $_POST['count'];
$proSize = $_POST['size'];
if (!isset($_SESSION['cart'])) {
$_SESSION['cart'] = array('id'=>$proId, 'count'=>$proCount, 'size'=>$proSize);
$_SESSION['cartStatus'] = 'open';
$successMsg = 'با موفقیت به کارت اضافه شد .';
} else {
if (isset($_SESSION['cartStatus']) and $_SESSION['cartStatus'] == 'open') {
$_SESSION['cart'][] = ['id'=>$proId, 'count'=>$proCount, 'size'=>$proSize];
$successMsg = 'با موفقیت به کارت اضافه شد .';
} else {
$errorMsg = 'یک عملیات خرید در جریان است . تا پایان این خرید ،سبد قفل است.';
}
}
}else{
$errorMsg = 'خطایی در اطلاعات ورودی رخ داده است.';
}
}
解决方案
我相信您的问题是您错过了阵列中的一个阵列级别$_SESSION['cart']
。尝试这个:
$_SESSION['cart'] = array(array('id'=>$proId, 'count'=>$proCount, 'size'=>$proSize));
但是,如果您的 if 语句是这样的(没有其他部分),IMO 将更有意义:
if (!isset($_SESSION['cart'])) {
$_SESSION['cart'] = []; //declare an empty array
$_SESSION['cartStatus'] = 'open';
$successMsg = 'با موفقیت به کارت اضافه شد .';
}
// Check for both $_SESSION['cart'] and $_SESSION['cartStatus']. Use && instead of "and"
if (isset($_SESSION['cartStatus'], $_SESSION['cart']) && $_SESSION['cartStatus'] == 'open') {
$_SESSION['cart'][] = ['id' => $proId, 'count' => $proCount, 'size' => $proSize];
$successMsg = 'با موفقیت به کارت اضافه شد .';
} else {
$errorMsg = 'یک عملیات خرید در جریان است . تا پایان این خرید ،سبد قفل است.';
}
推荐阅读
- quickbooks - serverVersion () 的 QBWebConnector 失败
- ruby-on-rails - 无法在 Gitlab Rails 控制台中按名称搜索文件
- xml - 使用 Xpath 解析 Socialblade 信息并将其导入 Google 表格
- android - 如何使用 LiveData 和 MVVM 架构轮询服务器?
- python - Python从字符串中删除乱码和所有内容
- sql - 计算每个代理 id、agentstatusid、日期的持续时间 ----- sql server 2014
- transactions - Hyperledger Fabric:重复值
- python - 在gca下交换python(jupyter notebook)中的轴值
- typescript - 如何在 TypeScript 中组合两个联合类型以创建第三种类型,类似于字符串插值?
- angular - 在单元格值更改事件上禁用 Ag 网格中的编辑