`

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

阅读更多

一个可以包含促销活动的购物车,所以比较其他简单的购物车,会稍微复杂一点。(用的是PHP的zend framework框架)

首先,购物车的数据库设计:
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的构造函数里:

/** 
* 购物车类购物方法
* website: www.jbxue.com 
* @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; 
} 


凡事有利就有弊,这个设计的好处是未登录就可以使用购物车;不好处就是两人共用一台电脑,购物车无法判断商品到底是哪一个人的。
第三点,添加一个商品到购物车。
添加一个商品到购物车,在这里,我把它想成是两个动作。
第一个动作:添加商品到购物车数据库里面。
第二个动作:查找购物车所有商品,并显示出来。
首先是第一个动作:

/** 
* 添加商品 
* website: www.jbxue.com
*/ 
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 购物车类的实现代码(单例模式)
php 购物车类实现代码
php 购物车代码示例
php 购物车类的实现代码

分享到:
评论

相关推荐

    飞歌G6IV刷机包,恢复出厂解决车机问题

    飞歌G6IV刷机包,恢复出厂解决车机问题

    人工智能大作业-无人机图像目标检测.zip

    无人机最强算法源码,易于部署和学习交流使用

    node-v10.9.0-linux-s390x.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    Telecord机器人,无electron依赖。.zip

    无人机最强源码,无人机算法,易于部署和学习交流使用

    中国统计NJ面板数据-(更新至2022年)林业有害生物防治情况.xls

    数据来源:中国统计NJ-2023版

    无人机共享平台小程序.zip

    无人机最强算法源码,易于部署和学习交流使用

    node-v10.14.2-linux-ppc64le.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    en-PP-OCRv3-det.onnx

    PP-OCR det

    毫无特色的 QQ 机器人.zip

    无人机最强算法源码,易于部署和学习交流使用

    麦肯锡 营销 概述与基本框架gl.ppt

    麦肯锡 营销 概述与基本框架gl.ppt

    node-v9.6.0-linux-x64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    大四多无人机协同控制技术的MATLAB工程.zip

    无人机最强源码,无人机算法,易于部署和学习交流使用

    大疆无人机RTK自定义网络连接和移动站,亲测可用.zip

    无人机最强源码,无人机算法,易于部署和学习交流使用

    node-v9.7.1-linux-x64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    Kendryte K210人工智能芯片应用程序集合,包括人脸检测、颜色检测、目标检测

    Kendryte K210人工智能芯片应用程序集合,包括人脸检测、颜色检测、目标检测和分类、二维码和Apriltag代码检测以及和ArduPilot飞控软件的通信。这些应用程序已部署到无人机终端。This repository is a collection of appl….

    node-v11.9.0-linux-armv6l.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    PHP开源 trx自动兑换机器人源码,一款自动USDT兑换TRX的telegram机器人源代码,完美无措,简单部署,直接运营

    PHP开源 trx自动兑换机器人源码,一款自动USDT兑换TRX的telegram机器人源代码,完美无措,简单部署,直接运营,无后门,无BUG,功能强大,带管理后台.zip

    基于51单片机+lcd12864显示俄罗斯方块小游戏MCU软件源代码.zip

    基于51单片机+lcd12864显示俄罗斯方块小游戏MCU软件源代码 * 单 片 机:STC89C52RC * 简 述:使用LCD12864显示的俄罗斯方块程序 * 功 能:计分,下一个方块预览,欢迎结束界面,长按连续左右移,暂停(按键Left+Turn) * IO口设定:按键 sbit key_sr_left=P3^7; sbit key_sr_turn=P3^6; sbit key_sr_right=P3^5; sbit key_sr_down=P3^4; LCD12864 sbit RS_Port=P1^0; sbit RW_Port=P1^1; sbit E_Port=P2^5; sbit PSB_Port=P1^2; sbit RST_Port=P1^4; 数码管锁存器 sbit dula=P2^6; sbit wela=P2^7;

    企业数智化转型全攻略:新质生产力赋能数字化运营体系建设方案.pptx

    企业数智化转型全攻略:新质生产力赋能数字化运营体系建设方案.pptx

    中国统计NJ面板数据-(更新至2022年)三次产业和主要行业贡献率.xls

    数据来源:中国统计NJ-2023版

Global site tag (gtag.js) - Google Analytics