php库存不足该怎么解决,ecshop积分兑换时提示库存不足解决方法

本文详细介绍了Ecshop积分商城中积分兑换商品时遇到的库存不足错误,并提供了具体的代码修改方案来解决由多选属性导致的库存检查错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用积分兑换商品时会提示库存不足:“对不起,该商品库存不足,现在不能兑换!” ,解决方法如下:

1. 打开Ecshop积分商城文件 "根目录/exchange.php"

发现248行与289行都有库存不足时报错的提示代码:

248行:

/* 查询:检查兑换商品是否有库存 */

if($goods['goods_number'] == 0 && $_CFG['use_storage'] == 1)

{

show_message($_LANG['eg_error_number'], array($_LANG['back_up_page']), array($back_act), 'error');

}

289行:

//查询:商品存在规格 是货品 检查该货品库存

if((!empty($specs)) && ($product_info['product_number'] == 0) && ($_CFG['use_storage'] == 1))

{

show_message($_LANG['eg_error_number'], array($_LANG['back_up_page']), array($back_act), 'error');

}

显然248行是直接检查的商品库存这里是没有问题的。问题出在289行,检查货品出了问题。

这里代码的意思是只要存在属性选择,就对对货品数量进行库存检查这显然是错误的,

因为:只有单选属性 跟货品挂钩,多选属性 是没有货品概念。

2. 修改Ecshop积分兑换文件代码解决问题。

修改289行代码:

//查询:商品存在规格 是货品 检查该货品库存

if((!empty($specs)) && ($product_info['product_number'] == 0) && ($_CFG['use_storage'] == 1))

{

show_message($_LANG['eg_error_number'], array($_LANG['back_up_page']), array($back_act), 'error');

}

如下:

//查询:商品存在规格 是货品 检查该货品库存

if((is_spec($specs)) && ($product_info['product_number'] == 0) && ($_CFG['use_storage'] == 1))

{

show_message($_LANG['eg_error_number'], array($_LANG['back_up_page']), array($back_act), 'error');

}

重新测试问题已经解决了。

3. 修改原理介绍——Ecshop二次开发知识总结。

做过Ecshop二次开发的朋友都了解,Ecshop中商品的属性有三种:

唯一属性:

只有一个值,购买商品时不能选择。

单选属性:

拥有多个值,用户只能选一个,比如颜色,选择红色的衣服或者蓝色的。

复选属性:

复选属性拥有多个值,用户可以选择多个。

在三种属性中仅第二种“单选属性 ”与货品库存有关。而函数is_spec()就是检查一组属性中是否有单选属性。因为加上此判断后问题解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值