php网上商城购物车设计代码分享


Posted in PHP onFebruary 15, 2012

首先,购物车的数据库设计:
1. id
2. goods_id 商品ID
3. session_id 购物车ID
4. goods_sn 商品编码
5. goods_name 商品名称
6. shop_price 商品商城售价
7. goods_price 商品真实售价(与shop_price的区别在于,当打折的时候,shop_price是打折之前商品的售价,而goods_price是打折之后的)
8. goods_number 数量
9. weight 商品重量
10. goods_attr 商品属性(如颜色,尺码)
11. promote_code 促销编码(为商品促销,做的策略模式识别码)
12. is_promote 促销ID
13. stock_id 库存ID
数据库结构大概是这个样子。当然如果还有其他的需求,比如商品的返利积分,商品是否虚拟产品,商品是否代发货等等,可以另加标示符。这里就不一一举例了。
第二点,我们这个购物车要求是在用户不登陆状态下可以把商品添加到购物车内的,这也是最近非常流行的一种方式,所以在购物车数据库设计里面,就没有加入user_id这个字段,考虑到的是用户未登陆下也可以把商品放入购物车。
那么识别购物车到底是哪一位用户的话,就是需要用到session_id,是用户对应购物车的唯一识别码。生成这个码可以放在购物车对象Cart的构造函数里:

/** 
* 购物车类购物方法 
* @param string $cart_id 购物车ID 
*/ 
public function __construct() 
{ 
Zend_Session::start(); 
$this->_session = new Zend_Session_Namespace('ShopCart'); 
if(!isset($this->_session->session_id)) 
{ 
$this->_session->session_id = md5(uniqid(mt_rand(), true)); 
$this->_session->info = array(); 
} 
$this->_cart_id = $this->_session->session_id; 
}

凡事有利就有弊,这个设计的好处是未登录就可以使用购物车;不好处就是两人共用一台电脑,购物车无法判断商品到底是哪一个人的。
第三点,添加一个商品到购物车。
添加一个商品到购物车,在这里,我把它想成是两个动作。
第一个动作:添加商品到购物车数据库里面。
第二个动作:查找购物车所有商品,并显示出来。
首先是第一个动作:
/** 
* 添加商品 
*/ 
public function goodsAddAction() 
{ 
// 添加商品使用get请求 
$goods_id = $this->_getParam('goods_id');//商品ID 
$goods_spec = $this->_getParam('filter_name');//商品属性(颜色,尺码) 
$goods_number = $this->_getParam('goods_number');//商品数量 
$promote_name = $this->_getParam('promote_name', 'Default');//促销策略 
//获取购物车实例 
$cartB = $this->_getCart(); 
$cartB->goodsAdd($goods_id, $goods_spec, $goods_number, $promote_name); 
//添加成功,跳转到下一步,查找购物车所有商品,并显示出来。 
$this->_showMessage(Bll_Context::isError() ? Bll_Context::getError() : '添加到购物篮成功!', Bll_Context::getRecirect('/orderv2'), 3); 
}

上段代码第15行:
$cartB->goodsAdd($goods_id, $goods_spec, $goods_number, $promote_name);
这就是添加商品操作函数,这里面的$promote_name是促销的一个参数,具体是用策略模式来选用哪种促销策略,我准备在下一篇文章具体来讨论。这里只要知道是添加这个商品的基本信息,存入到购物车数据库里即可。
其次就是第二个动作:
/** 
* 购物列表 
*/ 
public function indexAction() 
{ 
//获取购物车实例 
$cartB = $this->_getCart(); 
//列出购物车内所有商品 
$this->view->goods_list = $cartB->goodsViewList(); 
//获取用于显示规则消息的规则实例列表 
$this->view->tips = $cartB->goodsTipRules(); 
//购物车内商品总数量 
$this->view->total_number = $cartB->getTotalGoodsNumber(); 
//获取购物车内商品总货额 
$this->view->total_amount = $cartB->getTotalAmount(); 
}

这里第一个和第二个动作必须是要分开的,因为用户也可以不添加商品直接点购物车。

下面是效果图:

php网上商城购物车设计代码分享

php网上商城购物车设计代码分享

第一次发帖,有什么不足,不清楚的,还请见谅。欢迎讨论!

PHP 相关文章推荐
php 动态执行带有参数的类方法
Apr 10 PHP
php学习之 认清变量的作用范围
Jan 26 PHP
php提示无法加载或mcrypt没有找到 PHP 扩展 mbstring解决办法
Mar 27 PHP
浅析echo(),print(),print_r(),return之间的区别
Nov 27 PHP
php ci框架中加载css和js文件失败的原因及解决方法
Jul 29 PHP
推荐几个开源的微信开发项目
Dec 28 PHP
php快速查找数据库中恶意代码的方法
Apr 01 PHP
Nginx服务器上安装并配置PHPMyAdmin的教程
Aug 18 PHP
超详细的php用户注册页面填写信息完整实例(附源码)
Nov 17 PHP
PHP实现的蚂蚁爬杆路径算法代码
Dec 03 PHP
YII2.0之Activeform表单组件用法实例
Jan 09 PHP
Laravel5.1框架路由分组用法实例分析
Jan 04 PHP
php后台多用户权限组思路与实现程序代码分享
Feb 13 #PHP
php _autoload自动加载类与机制分析
Feb 10 #PHP
php 文本文件的读取效率
Feb 10 #PHP
php+iframe实现隐藏无刷新上传文件
Feb 10 #PHP
PHP中集成PayPal标准支付的实现方法分享
Feb 06 #PHP
PHP中call_user_func_array()函数的用法演示
Feb 05 #PHP
PHP高级对象构建 多个构造函数的使用
Feb 05 #PHP
You might like
Mysql的Root密码忘记,查看或修改的解决方法(图文介绍)
2013/06/14 PHP
php实现无限级分类
2014/12/24 PHP
PHP图像裁剪缩略裁切类源码及使用方法
2016/01/07 PHP
php反射学习之不用new方法实例化类操作示例
2019/06/14 PHP
jquery 年会抽奖程序
2011/12/22 Javascript
js固定DIV高度,超出部分自动添加滚动条的简单方法
2013/07/10 Javascript
Javascript中的String对象详谈
2014/03/03 Javascript
jquery实现无限分级横向导航菜单的方法
2015/03/12 Javascript
JavaScript动态加载样式表的方法
2015/03/21 Javascript
javascript中setTimeout使用指南
2015/07/26 Javascript
json+jQuery实现的无限级树形菜单效果代码
2015/08/27 Javascript
AngularJS 2.0新特性有哪些
2016/02/18 Javascript
js简单正则验证汉字英文及下划线的方法
2016/11/28 Javascript
jquery获取select,option所有的value和text的实例
2017/03/06 Javascript
jQuery取得元素标签名称小结(附代码)
2017/08/16 jQuery
Vue的watch和computed方法的使用及区别介绍
2018/09/06 Javascript
webpack4.0 入门实践教程
2018/10/08 Javascript
js闭包的9个使用场景
2020/12/29 Javascript
用python与文件进行交互的方法
2018/03/01 Python
网红编程语言Python将纳入高考你怎么看?
2018/06/07 Python
python基于http下载视频或音频
2018/06/20 Python
Python实现购物评论文本情感分析操作【基于中文文本挖掘库snownlp】
2018/08/07 Python
对Python w和w+权限的区别详解
2019/01/23 Python
python实现图书借阅系统
2019/02/20 Python
python模块之subprocess模块级方法的使用
2019/03/26 Python
pymysql模块的操作实例
2019/12/17 Python
CSS实现定位元素居中的方法
2015/06/23 HTML / CSS
PHP面试题集
2016/12/18 面试题
港湾网络笔试题
2014/04/19 面试题
应用电子技术专业个人求职信
2013/09/21 职场文书
机械专业求职信范文
2014/07/15 职场文书
工作证明范本(2篇)
2014/09/14 职场文书
卫生院艾滋病宣传活动总结
2015/05/09 职场文书
新人入职感言
2015/07/31 职场文书
《怀念母亲》教学反思
2016/02/19 职场文书
python基于tkinter制作下班倒计时工具
2021/04/28 Python