上一篇的时候只是写了简单的加入购物车功能,购物车中产品的删除、提交订单后,库存的减少 以及客户账户的余额都没有完善,

这一篇是接着完善上一篇的,上一篇写到了购物车中删除的功能了,为了使删除的代码少敲一些,我们要把前面

链接删除页面的时候 获取ids的值改为获取 arr的索引值arr的索引值k   改为

<a href='shanchu.php?sy={$k}'>删除</a></td>

这样我们进入删除页面后  就可以直接获取索引值sy 这样删除页面写起来就简单多了

下面就是删除页面的代码了 shanchu.php

 1 <?php
2 session_start();
3 $sy = $_GET["sy"];
4
5 //根据索引找到该数据
6 $arr = $_SESSION["gwc"];
7 $arr[$sy]; //要删除的数据
8
9 //如果数量不为1,数量减1
10 if($arr[$sy][1]>1)
11 {
12 $arr[$sy][1] = $arr[$sy][1]-1;
13 }
14 else //如果数量为1,移除
15 {
16 unset($arr[$sy]);
17 }
18
19 $_SESSION["gwc"] = $arr; //最后存一下购物车的内容
20
21 header("location:gouwuche.php");

这样删除页面就可以了,下面就是提交页面的代码了,相对来说比较繁琐,说到提交页面,我们会想到的是 库存、余额,我们只要提交订单,那么库存就会减少,

相对的 余额也会 减少,当然如果库存不足,或者余额不足的话,也要给购买者提示

在这个地方做了两个表格 用来存储数据的 

在gouwuche.php最后的时候加一个标签

<div><a href="tijiaodd.php"></a><div>

下面就是tijiaodingdd.php的代码了

 1 <?php
2 session_start();
3 header("Content-type:text/html;charset=utf-8"); //防止出现乱码
4 $uid=$_SESSION["uid"];
5 //先查一下账户余额
6 include("DADB.class.php");
7 $db=new DADB();
8 $ysql="select account from login where username='{$uid}'";
9 $yarr=$db->Query($ysql);
10 $yarr[0][0];//总额
11
12
13 //购物车的总价格,前面有写过
14
15 $arr=array();
16
17 if (!empty($_SESSION["gwc"]))
18 {
19 $arr=$_SESSION["gwc"];
20 }
21 $sum=0;
22 foreach($arr as $v)
23 {
24 $v[1];//购物车中产品的数量
25 $psql="select price from fruit WHERE ids='{$v[0]}'";
26 $parr=$db->Query($psql);
27 foreach($parr as $k)
28 {
29 $k[0];//产品的单价
30 $sum+=$k[0]*$v[1];
31 }
32 }
33
34 //判断余额是否满足购买
35 if($yarr[0][0]>=$sum)
36 {//余额满足,要判断库存
37 foreach($arr as $v)
38 {
39 $ksql="select number from fruit where ids='{$v[0]}'";
40 $karr=$db->Query($ksql);
41 $karr[0][0];//这是库存
42 if($karr[0][0]<$v[1]) //表示库存不足,这时要给顾客提示库存不足
43 {
44 echo"库存不足";
45 exit;
46 }
47 }
48
49 //判断之后需要提交订单了
50 //账户扣除余额
51 $kcsql="update login set account=account-{$sum} where username='{$uid}'";
52 $db->Query($kcsql,0);//这里是修改语句,所以要加上0
53
54 //扣除库存
55 foreach($arr as $v)
56 {
57 $kcksql="update fruit set number=number-$v[1] where ids='{$v[0]}'";
58 $db->Query($kcksql,0);
59 }
60
61 //所有的工作都做完了,这时我们就该提交订单了
62 // 这里我在数据库中做了两张表,把提交的订单添加到表中就可以保存了
63
64 //添加订单
65 $ddh = date("YmdHis");
66 $time = date("Y-m-d H:i:s");
67 $sdd = "insert into orders values('{$ddh}','{$uid}','{$time}')";
68 $db->Query($sdd,0);
69
70 //添加订单详情
71 foreach($arr as $v)
72 {
73 $sddxq = "insert into orderdetails values('','{$ddh}','{$v[0]}','{$v[1]}')";
74 $db->Query($sddxq,0);
75 }
76 }
77
78 else
79 {
80 echo "余额不足";
81 exit;
82 }
83
84 ?>

购物车还是和上一篇购物车中的产品是一样的,这时我们再去看看数据库中的表

备注:因为之前有过多次测试用的都是zhangsan的账号, 所以login表中的account价格发生了变化,变为33.6元,我们放入购物车的产品价格是16.8元,所以这里是没有问题的

php 实现简单购物车功能(2)的更多相关文章

  1. vue 入门 ------简单购物车功能实现(全选,数量加减,价格加减)

    简易购物车功能(无任何布局 主要是功能) 数量的加减 商品的总价钱 全选与全不选 删除(全选.价格 受影响) <script src="https://cdn.jsdelivr.net ...

  2. 用python实现简单购物车功能

    all_asset = 0 i1 = input("请输入总资产:") all_asset = int(i1) goods = [ {'name':'电脑','price':199 ...

  3. jq实现简单购物车增删功能

    https://www.cnblogs.com/sandraryan/ jq实现购物车功能 点击+- 增减数量,计算价格: 点击删除,删除当前行(商品) 点击- ,减到0 询问是否删除商品 点击全选 ...

  4. Android 购物车功能的实现

    首先,众所周知,ListView是Android最常用的控件,可以说是最简单的控件,也可以说是最复杂的控件. 作为一个Android初级开发者,可能会简单的ListView展示图文信息. 作为一个有一 ...

  5. ASP.NET之电子商务系统开发-2(购物车功能)

    一.前言 继上次的首页数据列表后,这是第二篇.记录一下购物车这个比较庞大的功能,可能实现的方法跟其他人有点不一样,不过原理都差不多,是将cookie存数据库里面的. 二.开始 首先看一下购物车流程及对 ...

  6. 微信小程序之购物车功能

    前言 以往的购物车,基本都是通过大量的 DOM 操作来实现.微信小程序其实跟 vue.js 的用法非常像,接下来就看看小程序可以怎样实现购物车功能. 需求 先来弄清楚购物车的需求. 单选.全选和取消, ...

  7. vue实现淘宝购物车功能

    淘宝购物车功能,效果如下图 非常简单的逻辑,没有做代码的封装,代码如下 <div class="list-container"> <div class=" ...

  8. vue2.0实现购物车功能

    购物车功能是一件比较繁琐的事情,逻辑功能太多,今天就用vue2.0实现一个简单的购物车功能,数据都本地自己写的假数据 功能列表: 1.全选和单选结算 2.减少和增加数量 3.商品的删除 界面搭建以及布 ...

  9. [转]微信小程序之购物车功能

    本文转自:https://www.cnblogs.com/linxin/p/6834206.html 前言 以往的购物车,基本都是通过大量的 DOM 操作来实现.微信小程序其实跟 vue.js 的用法 ...

随机推荐

  1. odoo开发笔记 -- 用户配置界面如何增加模块访问权限

    在odoo设置界面,点击用户,进入用户配置界面,会看到: 访问权 | 个人资料菜单 在访问权 page菜单界面,可以看到系统预制的一些模块都会显示在这里, 那么,我们自己开发的模块如何显示在这块呢,从 ...

  2. 阿里云centos7安装图形界面

    CentOS 7 系统下,本文以 MATE 桌面环境安装进行安装配置说明: 登录服务器,执行如下指令安装桌面环境: # 先安装 MATE Desktop    yum groups install & ...

  3. PyCharm下载与激活

    1.集成开发环境(IDE:Integrated Development Environment)PyCharm下载地址:https://www.jetbrains.com/pycharm/downlo ...

  4. vector源码2(参考STL源码--侯捷):空间分配、push_back

    vector源码1(参考STL源码--侯捷) vector源码2(参考STL源码--侯捷) vector源码(参考STL源码--侯捷)-----空间分配导致迭代器失效 vector源码3(参考STL源 ...

  5. 作用域中LHS查询和RHS查询

    LHS查询:赋值操作左侧的查询,LHS查询试图找到变量的容器本身,,从而对其赋值. RHS查询:赋值操作右侧的查询,可以理解为"取到某某的值" 举例: function foo(a ...

  6. OopMap介绍

    摘自:http://blog.csdn.net/woaigaolaoshi/article/details/51439227 在HotSpot中,对象的类型信息里有记录自己的OopMap,记录了在该类 ...

  7. redis学习(五) redis过期时间

    redis过期时间 1.redis过期时间介绍 有时候我们并不希望redis的key一直存在.例如缓存,验证码等数据,我们希望它们能在一定时间内自动的被销毁.redis提供了一些命令,能够让我们对ke ...

  8. SQL PKG示例

    CREATE OR REPLACE PACKAGE PKG_SYS_LOG IS -- Author : Li Cong -- Created : 2009-10-12 -- Purpose : 存放 ...

  9. Java RMI 框架(远程方法调用)

    转自:http://haolloyin.blog.51cto.com/1177454/332426 RMI(即Remote Method Invoke 远程方法调用).在Java中,只要一个类exte ...

  10. React 基础实例教程

    园子都荒废两个月了,实在是懒呀.. 近段时间用React开发了几个页面,在使用过程中着实碰到了一些问题,估计刚开始学习的伙伴们都会遇到各种各样的坑 总结记录一下,只看文档是碰不上问题的,内容基础也不基 ...