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 相关文章推荐
WINDOWS 2000下使用ISAPI方式安装PHP
Sep 05 PHP
基于php-fpm 参数的深入理解
Jun 03 PHP
如何利用PHP执行.SQL文件
Jul 05 PHP
ThinkPHP行为扩展Behavior应用实例详解
Jul 22 PHP
php实现最简单的MVC框架实例教程
Sep 08 PHP
php实现的树形结构数据存取类实例
Nov 29 PHP
php操作mongoDB实例分析
Dec 29 PHP
PHP cURL初始化和执行方法入门级代码
May 28 PHP
PHP实现163邮箱自动发送邮件
Mar 29 PHP
Yii框架中sphinx索引配置方法解析
Oct 18 PHP
PHP调用微博接口实现微博登录的方法示例
Sep 22 PHP
PHP PDOStatement::fetchObject讲解
Feb 01 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
PHP求小于1000的所有水仙花数的代码
2012/01/10 PHP
php缩放gif和png图透明背景变成黑色的解决方法
2014/10/14 PHP
php显示时间常用方法小结
2015/06/05 PHP
jquery 输入框数字限制插件
2009/11/10 Javascript
setTimeout的延时为0时多个浏览器的区别
2012/05/23 Javascript
js改变img标签的src属性在IE下没反应的解决方法
2013/07/23 Javascript
JavaScript实现防止网页被嵌入Frame框架的代码分享
2014/12/29 Javascript
JavaScript搜索字符串并将搜索结果返回到字符串的方法
2015/04/06 Javascript
浅析JS中对函数function的理解(基础篇)
2016/10/14 Javascript
js设置和获取自定义属性的方法
2016/10/20 Javascript
微信小程序 定义全局数据、函数复用、模版等详细介绍
2016/10/27 Javascript
Vue.directive自定义指令的使用详解
2017/03/10 Javascript
javascript  删除select中的所有option的实例
2017/09/17 Javascript
详解浏览器缓存和webpack缓存配置
2018/07/06 Javascript
微信小程序仿今日头条导航栏滚动解析
2019/08/20 Javascript
vue webpack build资源相对路径的问题及解决方法
2020/06/04 Javascript
使用python实现拉钩网上的FizzBuzzWhizz问题示例
2014/05/05 Python
Python里隐藏的“禅”
2014/06/16 Python
Python的迭代器和生成器使用实例
2015/01/14 Python
详解python中字典的循环遍历的两种方式
2017/02/07 Python
Python使用正则表达式抓取网页图片的方法示例
2017/04/21 Python
Python正则表达式常用函数总结
2017/06/24 Python
python数字图像处理之高级形态学处理
2018/04/27 Python
python运用sklearn实现KNN分类算法
2019/10/16 Python
Python如何输出整数
2020/06/07 Python
Python基于httpx模块实现发送请求
2020/07/07 Python
Python3自带工具2to3.py 转换 Python2.x 代码到Python3的操作
2021/03/03 Python
详解CSS3中字体平滑处理和抗锯齿渲染
2017/03/29 HTML / CSS
html5使用canvas绘制太阳系效果
2014/12/15 HTML / CSS
Orvis官网:自1856年以来,优质服装、飞钓装备等
2018/12/17 全球购物
求职信模板标准格式范文
2014/02/23 职场文书
奥林匹克的口号
2014/06/13 职场文书
电子商务专业毕业生自荐书
2014/06/22 职场文书
授权委托书
2014/07/31 职场文书
幼儿教师暑期培训方案
2014/08/27 职场文书
php去除deprecated的实例方法
2021/11/17 PHP