php实现商城购物车的思路和源码分析_php实例

来源:脚本之家  责任编辑:小易  

购物车管理模块主要功能有如下几个部分:(1)创建购物车 当客户登录后,系统会给客户创建一个购物车放入服务器的Session会话中。使客户在整个会话中都拥有一个相同的购物车。这里主要运用了Http协议中的会话机制,将购物车保存在客户的会话中,这样在整个客户游览不同页面商品的过程中,都会使用同一个购物车对象。具体执行步骤:(1)从客户的请求对象中获取Session会话对象(2)从会话对象中获取购物车对象(3)判断是购物车对象是不是空的,如果是空是就创建一个/*在监听到session被创建之后,就立即向session中添加一个购物车Car;public void sessionCreated(HttpSessionEvent arg0){ HttpSession session=arg0.getSession();Cart cart=new Cart();session.setAttribute("cart",cart);}/*从session中获得购物车*/Cart cart=(Cart)session.getAttribute("cart");if(cart=null){ cart=new Cart();}(2)向购物车中添加一个商品项 客户在查看网页上的一个商品时,当向服务器发送一个“添加到购物车”的请求时,会执行这个功能。功能执行过程:(1)从客户请求对象中获取商品的ID(2)调用业务层的方法根据商品ID去数据查询商品的信息,返回商品对象(3)从商品对象中获取商品名,商品价格,来构建一个商品项对象(4)从Session会话中获取购物车对象(5)调用业务层的方法来根据购物车对象和商品项对象来执行添加操作(6)将些商品项对象放入到购物车中 部分实现代码:/*从数据库中把商品取到;ProductService productService=(ProductService)ServiceFactory.getInstance().getService(Globals.PRODUCT_SERVICE);Integer id=Integer.parseInt(request.getParameter("productid"));Product product=productService.getProductById(id);在向购物车中添加商品的时候会判断商品是否已经存在,*已存在的就不让在加入了;if(cart.isExist(id)){ message="该商品已经存在!请(-1)'>返回!request.setAttribute("message",message);return mapping.findForward("error");} else {/*向购物车添加一个商品;cart.addCart(product);session.setAttribute("cart",cart);return mapping.findForward("addcartsuccess");}www.zgxue.com防采集请勿采集本网。

本文介绍一个php实现的购物车代码,功能实现完整,具有一定的参考价值

这个要看你的商城是怎么设计的,有的提醒是在cooking里面,那么你就要用 ajax 去修改php购物车表,修改成功之后在去,添加那个小红点的提示。这个要看代码,思路是我这样的

这里我们为你提供个简单的php购物车代码,从增加购物产品与发生购买了,在商城开发中,这个功能是少不了的

购物车是网上购物平台中的一个重要模块,模拟超市中的购物车功能,即用户在结账前挑选商品的过程。看完图就会明白,采纳哦。

具体分析如下:

商品->购物车 购物车必2113须是个单独的表5261,关联商品,用户,跟订单无关 我以4102前的做法是,将所有的1653购物车信息都放到数据库中 归根到底,要看你们项目怎么规定购物车的处理方式

对购物车里商品的操作大体上有以下几个:添加商品,删除商品,以及提交订单;

$.post basePath+\"/shoppingcar/selectAll.do\", {}, function(result){ if(result.success){ var obj=result.data;(obj).each(function(index){ var url=\"upload/image/\"+this.car_id+\"/\"+this.

方法本质是:把session存入array,对array进行增加、删除、修改操作,array中的每一组记录都是一个商品的信息(个数,价格等);

解决购物车的思路是用session记录一个二维数组。一维代表每一个商品,二维包含了商品的id,商品的数量...等可以自行增加,反正都是二维了,自己愿意带多少个商品属性就加上去。

购物车的操作流程:首先,登录到网站中浏览商品;然后,购买指定的商品,进入购物车页面中,在该页面可以实现更改商品数量、删除商品、清空购物车、继续购物等;最后,生成订单,提交订单等操作。

详细请看强大的注释;

首先登入;

<body><h1>登入页面</h1><form action="dengrucl.php" method="post"> <div>帐号:<input type="text" name="zhang"/></div> <div>密码:<input type="text" name="mi"/></div> <input type="submit" value="登入"/></form></body>

图:

登入处理:

<?phpsession_start();include ("db.class.php");$db = new db();$zhang = $_POST["zhang"];$mi = $_POST["mi"];$sql = "select mi from yonghu WHERE zhang = '{$zhang}'";$arr = $db->Query($sql);if(!empty($zhang)&&!empty($mi)&&$mi = $arr){ $_SESSION["zhang"] = $zhang; header("location:zym.php");}else{ echo "登入失败";}?>

很简单的一个登入,没啥说的;

他登入完了以后直接进入主页面:

<body><h1>长腿璇购物商城</h1><table border="1" cellpadding="0" cellspacing="0" width="100%" > <tr> <td>代号</td> <td>水果名称</td> <td>水果价格</td> <td>水果产地</td> <td>水果库存</td> <td>操作</td> </tr> <?php session_start();$_SESSION["zhang"] = "xiaoming";//不做登入的情况下,直接存sessiion include ("db.class.php"); $db = new db(); $sql = "select * from sgbiao"; $arr = $db->Query($sql); foreach ($arr as $v) { echo " <tr> <td>{$v[0]}</td> <td>{$v[1]}</td> <td>{$v[2]}</td> <td>{$v[3]}</td> <td>{$v[4]}</td> <td> <a href='zymcl.php?ids={$v[0]}'>加入购物车</a> </td> </tr>"; } ?> <?php //这里显示的是 购物车有多少产品,和产品的总价格 $ann=array(); if(!empty($_SESSION["gwc"])) { $ann=$_SESSION["gwc"]; } $zhonglei = count($ann); $aa=0; foreach($ann as $k) { $k[0];//水果代号 $k[1];//水果数量 $sql1="select jiage from sgbiao where ids='{$k[0]}'"; $danjia=$db->Query($sql1); foreach($danjia as $n) { $aa=$aa + $n[0]*$k[1]; } } echo"数量:{$zhonglei}<br/>价格:<mark>{$aa}元"; ?></table><a href="tijiao.php" rel="external nofollow" rel="external nofollow" >查看账户</a><a href="ckgwc.php" rel="external nofollow" >查看购物车</a></body>

来图:

当我点击添加到购物车:

上面的数量与价格变了,说明已经加到了购物车里面;

来看一下是怎么处理的(强大的注释):

<?phpsession_start();//$ids = $_GET["ids"];if(empty($_SESSION["gwc"])){ //如果点击的购物车是空的(第一次添加) //如果购物车里是空的,造二维数组, $arr = array( array($ids,1) //一维数组,取ids,第一次点击增加一个 ); $_SESSION["gwc"]=$arr; //扔到session里面}else //这里不是第一次点击{ //先判断购物车里是否已经有了该商品,用$ids $arr = $_SESSION["gwc"]; //把购物车的状态取出来 $chuxian = false;//定义一个变量;用来表示是否出现,默认是未出现 foreach ($arr as $v) { //便利他 //如果这里面有这件商品 if ($v[0] == $ids) //如果取过来的$v[0](商品的代号)等于$ids那么就证明购物车中已经有了这一件商品 { $chuxian = true; //如果出现,直接把chuxian改成true } } if($chuxian) { //购物车中有此商品 for($i=0;$i<count($arr);$i++) { if($arr[$i][0] == $ids) { //把点到的商品编号加1 $arr[$i][1] += 1; } } $_SESSION["gwc"] = $arr; } else { //这里就只剩下:购物车里有东西,但是并没有这件商品 $asg = array($ids,1); //设一个小数组 $arr[] = $asg; $_SESSION["gwc"]=$arr; }}header("location:zym.php")?>

接下来做一下购物车的页面:

<body><h1>查看购物车</h1><table width="100%" border="1"cellspacing="0" cellpadding="0"> <tr> <td>商品名称</td> <td>商品单价</td> <td>商品数量</td> <td>操作</td> </tr> <?php session_start(); if(!empty($_SESSION["gwc"])) { $arr = array(); $arr = $_SESSION["gwc"]; //造数组 } include ('db.class.php'); $db = new db(); foreach ($arr as $v) { global $db; $sql = "select * from sgbiao WHERE ids = '{$v[0]}'"; $att = $db->query($sql); foreach ($att as $a) { echo "<tr> <td>{$a[1]}</td> <td>{$a[2]}</td> <td>{$v[1]}</td> <td><a href='shanchu.php?ids={$a[0]}'>删除</a> </td> </tr> ";// 蔬果的名称// 单价// 取int数量// 这个地方也可以加索引shanchu.php?sy={$v} } } ?></table><a href="tijiao.php" rel="external nofollow" rel="external nofollow" >提交订单</a></body>

上图:

可以看到大苹果的数量是4,若是我点删除,其条件便是存在大苹果,且数量大于一,点击删除使数量减一:

白葡萄的数量是1,若我点击删除,其条件是数量不大于一,使其移除数组;

说了这些快来看看删除页面吧:

<?phpsession_start();$ids = $_GET["ids"];$arr = $_SESSION["gwc"];//var_dump($arr);//取索引2(数量)foreach ($arr as $key=>$v){ if($v[0]==$ids) { if($v[1]>1){ //要删除的数据 $arr[$key][1]-=1; } else{ //数量为1的情况下,移除该数组 unset($arr[$key]); } }}$_SESSION["gwc"] = $arr;//记得扔到session里面header("location:ckgwc.php");//删除完跳转回去

高能!!

提交订单页面,我只来一个处理页面吧,小伙伴若有需要自己填链接即可:

<?phpsession_start();include ("db.class.php");$db = new db();//判断用余额是否满足$zhang = $_SESSION["zhang"];//获取到用户名$sye = "select zhanghu from yonghu WHERE zhang = '{$zhang}'";$ye = $db->query($sye);$ye[0][0];//这是余额$ann=array();if(!empty($_SESSION["gwc"])){ $ann=$_SESSION["gwc"];}$zhonglei = count($ann);$aa=0;//总价格foreach($ann as $k){ $k[0];//水果代号 $k[1];//水果数量 $sql1="select jiage from sgbiao where ids='{$k[0]}'"; $danjia=$db->Query($sql1); foreach($danjia as $n) { $aa=$aa + $n[0]*$k[1]; }}//判断余额是否满足if($ye[0][0]>=$aa){ //钱够,判断库存 foreach($ann as $v) { $skc = "select sgname,kucun from sgbiao WHERE ids='{$v[0]}'"; //水果代号$v[0] $akc = $db->query($skc); $akc[0][1];//库存 //比较是否满足库存 if($akc[0][1]<$v[1]) { echo "{$akc[0][0]}库存不足"; //退出 exit; } }//提交订单://i. 从用户账户中扣除本次购买的总价格//ii. 从商品库存中扣除本次每种商品的购买数量//iii. 向订单表和订单内容表中加入本次购买的商品信息 //扣除账户余额$skcye = "update yonghu set zhanghu = zhanghu-{$aa} WHERE zhang = '{$zhang}'"; $db->query($skcye,0); //扣除库存 foreach($ann as $v) { $skckc = "update sgbiao set kucun = kucun-{$v[1]} WHERE ids='{$v[0]}'"; //水果代号$v[0] $db->query($skckc,0); } //添加订单信息 //取当前时间 $time = time(); //自动生成订单号 $ddh = date("YmdHis"); $sdd = "insert into dingdan VALUES ('{$ddh}','$zhang','$time')"; $db->query($sdd,0); //添加订单内容 foreach ($ann as $v) { $sddxq = "insert into ddneirong VALUES ('','$ddh','{$v[0]}','{$v[1]}')"; $db->query($sddxq,0); }}else{ echo "钱不够"; exit;}

如此一来,购物车大体上的功能都已实现;

来看看点击提交订单后的效果:

1.减少水果库存:

2.添加订单:

3.添加订单内容:

4.扣除购买人的账户余额:

以上便是购物车内容

到此这篇关于php实现购物车的思路和源码分析的文章就介绍到这了,更多相关php实现购物车内容请搜索真格学网以前的文章或继续浏览下面的相关文章希望大家以后多多支持真格学网!

PHP 购物车 程序修改 需要对 SHOP-SCRIPT 一个php+smarty开发的网上购物车程序进行修改.需要用到php,javascript 技术.具体描述请看附件图片.都不算难,预算不高300元人民币.希望能够按要求 尽快完成.以后还有更多项目可以合作内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • php+pdo实现的购物车类完整示例
  • php实现保存周期为1天的购物车类
  • php实现购物车产品删除功能(2)
  • php实现产品加入购物车功能(1)
  • php实现购物车功能(以大苹果购物网为例)
  • php实现简单加入购物车功能
  • php实现添加购物车功能
  • php实现购物车功能(下)
  • php实现购物车功能(上)
  • laravel 获取某个查询的查询sql语句方法
  • php利用正则表达式实现手机号码中间4位用星号(*)替换显示功能
  • yii框架批量插入数据扩展类的简单实现方法
  • php+ajax 实现输入读取数据库显示匹配信息
  • thinkphp下ueditor的使用方法详解
  • 关于thinkphp 框架表单验证及ajax验证问题
  • 实现wordpress主题侧边栏切换功能的php脚本详解
  • php和mysql实现分页导航思路详解
  • php实例分享之mysql数据备份
  • php多态代码实例
  • PHP项目购物车的详细思路是什么?如题 谢谢了
  • java web 做购物车的大概思路,和实现步奏是什么?
  • php购物车问题,我想写个购物车,但是从购物车页面怎么吧数据提交到订单页面就不知道了
  • 京东的购物车模块是怎么实现的?思路是什么?
  • php ajax 商城里面我的购物车有更新 用小红点提醒怎么做 我是新手求大神给案例啊 谢谢
  • java web 做购物车的大概思路,和实现步奏是什么?
  • 做一个php商城项目,里边的关于订单方面的需要哪些东西?
  • web前端购物车功能实现
  • ThinkPHP框架怎么做商城购物车
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全php基础php技巧php实例php文摘php模板首页php编程php+pdo实现的购物车类完整示例php实现保存周期为1天的购物车类php实现购物车产品删除功能(2)php实现产品加入购物车功能(1)php实现购物车功能(以大苹果购物网为例)php实现简单加入购物车功能php实现添加购物车功能php实现购物车功能(下)php实现购物车功能(上)laravel 获取某个查询的查询sql语句方法php利用正则表达式实现手机号码中间4位用星号(*)替换显示功能yii框架批量插入数据扩展类的简单实现方法php+ajax 实现输入读取数据库显示匹配信息thinkphp下ueditor的使用方法详解关于thinkphp 框架表单验证及ajax验证问题实现wordpress主题侧边栏切换功能的php脚本详解php和mysql实现分页导航思路详解php实例分享之mysql数据备份php多态代码实例php获取数组长度的方法(有实例)微信公众平台实现获取用户openid教你如何使用php session使用php生成二维码的两种方法(带php发送get、post请求的6种方法简php中把stdclass object转array的微信公众平台网页授权获取用户基laravel框架数据库curd操作、连贯php删除数组中空值的方法介绍php从数组中删除元素的四种方法实php面向对象详解(三)php中file_exists函数使用详解thinkphp之用户注册登录留言完整实例yii中ueditor富文本编辑器文件和图片上传详解php处理密码的几种方式laravel框架实现即点即改功能的方法分析php 生成tab键或逗号分隔的csv微信支付开发教程(一)微信支付url配置基于php在各种web服务器的运行模式详解php获取""/""传参的值简单方法
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved