首先是几个简单的登录页面

<body>
<form action="chuli.php" method="post">
<div style="margin-left: 500px; margin-top: 200px;
height: 250px; width: 250px; border: 1px dashed black">
<div style="margin-left: 100px; "><h3>登录</h3></div>
<div style="margin-top: 20px">用户名:<input type="text" name="uid"/></div><br/>
<div>密 码:<input type="password" name="pwd"/></div><br/>
<div style="margin-left: 180px"><input type="submit" value="登录"/></div>
</div> </form>
</body>

 登录页面写好之后,需要进入处理页面,从数据库中调出用户名和密码:

<?php
session_start(); //开启session 必须要写到第一行
header("Content-type:text/html;charset=utf-8"); $uid=$_POST["uid"]; //从登录页面获取到用户名和密码
$pwd=$_POST["pwd"]; include("DADB.class.php");
$db=new DADB(); $sql="select password from login where username='{$uid}'";
$arr=$db->Query($sql); if($arr[0][0]==$pwd && !empty($pwd)) //判断所填写的密码和取到的密码是一样的,而且密码不能为空
{
$_SESSION["uid"]=$uid;
header("location:main.php");
}
else
{
echo"登录失败";
}

  这个显示的是登录页面

下面要进入主页面了,从数据库中把所有的水果信息调出来,然后我们再来实现加入购物车这一项功能

<h2>大苹果购物网</h2>
<?php
session_start();
include("DADB.class.php");
$db=new DADB();
?>
<table border="1" width="100%" cellpadding="0" cellspacing="0">
<tr>
<td>代号</td>
<td>水果名称</td>
<td>水果价格</td>
<td>原产地</td>
<td>货架</td>
<td>库存量</td>
<td></td>
</tr>
<?php $uid=$_SESSION["uid"]; $sql="select * from fruit";
$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>{$v[5]}</td>
<td><a href='add.php?ids={$v[0]}'>购买</a></td> //这里的购买相当于添加购物车的功能
</tr>";
}
?> <?php
//这里显示的是 购物车有多少产品,和产品的总价格
$ann=array();
if(!empty($_SESSION["gwc"]))
{
$ann=$_SESSION["gwc"];
}
$zhonglei = count($ann); $sum=0;
foreach($ann as $k)
{
$sql1="select price from fruit where ids='{$v[0]}'"; $danjia=$db->Query($sql1); foreach($danjia as $n)
{
$sum=$sum + $n[0]*$k[1];
} }
echo"购物车有<mark>{$zhonglei}</mark>种商品,总价格为<mark>{$sum}</mark>元";
?>
</table>
<div>
<a href="gouwuche.php">查看购物车</a>
<a href="main.php">浏览商品</a>
<a href="zhanghu.php">查看账户</a> </div> </body>

  主页面显示图

接下来是添加购物车页面

<?php
session_start(); $ids = $_GET["ids"]; if(empty($_SESSION["gwc"]))
{
//1.购物车是空的,第一次点击添加购物车
$arr = array(
array($ids,1)
);
$_SESSION["gwc"]=$arr;
}
else
{
//不是第一次点击
//判断购物车中是否存在该商品
$arr = $_SESSION["gwc"]; //先存一下 $chuxian = false;
foreach($arr as $v)
{
if($v[0]==$ids)
{
$chuxian = true;
}
} if($chuxian)
{
//3.如果购物车中有该商品 for($i=0;$i<count($arr);$i++)
{
if($arr[$i][0]==$ids)
{
$arr[$i][1]+=1;
}
} $_SESSION["gwc"] = $arr;
}
else
{
//2.如果购物车中没有该商品
$asg = array($ids,1);
$arr[] = $asg;
$_SESSION["gwc"] = $arr;
} }
header("location:gouwuche.php");

  然后先是购物车主界面,如下

<h2>购物车中有以下商品:</h2>
<table cellpadding="0" cellspacing="0" border="1" width="100%">
<tr>
<td>商品名称</td>
<td>商品单价</td>
<td>购买数量</td>
<td></td>
</tr>
<?php
session_start();
//$uid=$_SESSION["uid"]; $arr=array(); if(!empty($_SESSION["gwc"]))
{
$arr=$_SESSION["gwc"];
}
include("DADB.class.php");
$db=new DADB(); foreach($arr as $v)
{
global $db;
$sql="select * from fruit where ids='{$v[0]}'";
$att=$db -> Query($sql,1);
foreach($att as $n)
{
echo"<tr>
<td>{$n[1]}</td>
<td>{$n[2]}</td>
<td>{$v[1]}</td>
<td>
<a href='shanchu.php?sy={$k}'>删除</a></td>
</tr>";} } ?> </table> <div> <a href="gouwuche.php">查看购物车</a> <a href="main.php">浏览商品</a> <a href="zhanghu.php">查看账户</a> </div> 14 15 </body>

  

紧接着我们就到了删除页面,当购物车只有一件商品和大于一件商品时做处理

<?php
session_start();
$sy = $_GET["sy"]; //根据索引找到该数据
$arr = $_SESSION["gwc"];
$arr[$sy]; //要删除的数据 //如果数量不为1,数量减1
if($arr[$sy][1]>1)
{
$arr[$sy][1] = $arr[$sy][1]-1;
}
else //如果数量为1,移除
{
unset($arr[$sy]);
} $_SESSION["gwc"] = $arr; //最后存一下购物车的内容 header("location:gouwuche.php");

  

至于提交页面,我们要想到余额,库存等因素,所以比较繁琐,

不i怕,上代码。

<?php
session_start();
header("Content-type:text/html;charset=utf-8"); //防止出现乱码
$uid=$_SESSION["uid"];
//先查一下账户余额
include("DADB.class.php");
$db=new DADB();
$ysql="select account from login where username='{$uid}'";
$yarr=$db->Query($ysql);
$yarr[0][0];//总额 //购物车的总价格,前面有写过 $arr=array(); if (!empty($_SESSION["gwc"]))
{
$arr=$_SESSION["gwc"];
}
$sum=0;
foreach($arr as $v)
{
$v[1];//购物车中产品的数量
$psql="select price from fruit WHERE ids='{$v[0]}'";
$parr=$db->Query($psql);
foreach($parr as $k)
{
$k[0];//产品的单价
$sum+=$k[0]*$v[1];
}
} //判断余额是否满足购买
if($yarr[0][0]>=$sum)
{//余额满足,要判断库存
foreach($arr as $v)
{
$ksql="select number from fruit where ids='{$v[0]}'";
$karr=$db->Query($ksql);
$karr[0][0];//这是库存
if($karr[0][0]<$v[1]) //表示库存不足,这时要给顾客提示库存不足
{
echo"库存不足";
exit;
}
} //判断之后需要提交订单了
//账户扣除余额
$kcsql="update login set account=account-{$sum} where username='{$uid}'";
$db->Query($kcsql,0);//这里是修改语句,所以要加上0 //扣除库存
foreach($arr as $v)
{
$kcksql="update fruit set number=number-$v[1] where ids='{$v[0]}'";
$db->Query($kcksql,0);
} //所有的工作都做完了,这时我们就该提交订单了
// 这里我在数据库中做了两张表,把提交的订单添加到表中就可以保存了 //添加订单
$ddh = date("YmdHis");
$time = date("Y-m-d H:i:s");
$sdd = "insert into orders values('{$ddh}','{$uid}','{$time}')";
$db->Query($sdd,0); //添加订单详情
foreach($arr as $v)
{
$sddxq = "insert into orderdetails values('','{$ddh}','{$v[0]}','{$v[1]}')";
$db->Query($sddxq,0);
}
} else
{
echo "余额不足";
exit;
} ?>

  

实现功能是没问题的

php 实现购物车功能,以大苹果购物网为例,上图上代码。。。。的更多相关文章

  1. 基于vue2.0打造移动商城页面实践 vue实现商城购物车功能 基于Vue、Vuex、Vue-router实现的购物商城(原生切换动画)效果

    基于vue2.0打造移动商城页面实践 地址:https://www.jianshu.com/p/2129bc4d40e9 vue实现商城购物车功能 地址:http://www.jb51.net/art ...

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

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

  3. APP UI结构-首页功能点大集锦,很干很详细

    APP UI结构的系列的文章有一段时间没有更新了,因为最近在学一些新东西和看一些新书籍,适当的给自己充电也是为了更好的输出,言归正传,今天想跟大家聊的是和首页相关的一些内容,可能有些内容最近有的小伙伴 ...

  4. jQuery 复制节点的元素实现加入到购物车功能

    描写叙述: 用户点击左边div中的商品,相应商品会自己主动加入到右面的div中,类似电子商城中的加入到购物车功能. 主要用到了jquery中的复制节点功能,基本原理是首先获取点击的元素,然后将对应信息 ...

  5. JQuery编写简易京东购物车功能

    前天无意间看到有一位程序员的博客,有一篇名为无聊时编写的购物车,看了之后,只是觉得很垃圾,因为代码很臃肿,当然我写的也不咋地,当然我也是复 习一下所学的js,再敲这个的期间遇到了如下问题,1:子元素父 ...

  6. 042——VUE中组件之子组件使用$on与$emit事件触发父组件实现购物车功能

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. jQuery 复制节点的元素实现添加到购物车功能

    描述: 用户点击左边div中的商品,对应商品会自动添加到右面的div中,类似电子商城中的添加到购物车功能. 主要用到了jquery中的复制节点功能,基本原理是首先获取点击的元素,然后将相应信息进行克隆 ...

  8. Android 购物车功能的实现

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

  9. 一款功能强大的iphone购物应用源码

    一款功能强大的iphone购物应用源码,这款应用源码比较完整的,并且还支持信用卡支付服务等功能的,基本实现了我们常用的购物应用功能了,实现商品的基本展示功能,还具有完整的用户管理,以及完整的购物流程等 ...

随机推荐

  1. .NET DLL 保护措施详解(非混淆加密加壳)核心思路的实现

    最近有很多朋友通过BLOG找到我询问我的相关细节,其实相关的实现细节我早已把源码上传到51aspx上面了,地址是http://www.51aspx.com/code/codename/56949 也有 ...

  2. C++编程之面向对象的三个基本特征

    面向对象的三个基本特征是:封装.继承.多态. 封装 封装最好理解了.封装是面向对象的特征之一,是对象和类概念的主要特性. 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类 ...

  3. 基于Flex的HTTPService(GET和POST)

    一.基于GET的HTTPService: <?xml version="1.0" encoding="utf-8"?><mx:Applicat ...

  4. Kettle(Pentaho)实现web方式远程执行job或transformation

    一.背景 公司在用kettle做数据etl,每做完一个job或transformation发布上线想要立即执行看数据效果的话每次都是找运维同学登陆服务器打开kettle找到对应的文件点击执行,整个过程 ...

  5. java实现解析二进制文件(字符串、图片)

    1.需求说明,实现细节要求: 解析二进制文件 files\case10\binary,其中包含一个字符串和一张图片,数据文件格式为字符串数据长度(2字节)+字符串内容+图片数据长度(4字节)+图片数据 ...

  6. apche基于域名,ip,端口的配置

    基于域名的服务端: 13 iptables -F 14 setenforce 0 15 ifconfig eth0 172.18.43.146 16 yum -y install bind bind- ...

  7. python之字符串详解2

    逻辑判断字符串类型,返回布尔值 1. islower 描述:判断所有字符是否为小写 语法: def islower(self): # real signature unknown; restored ...

  8. 分析下为什么spring 整合mybatis后为啥用不上session缓存

    因为一直用spring整合了mybatis,所以很少用到mybatis的session缓存. 习惯是本地缓存自己用map写或者引入第三方的本地缓存框架ehcache,Guava 所以提出来纠结下 实验 ...

  9. 读书笔记 effective c++ Item 14 对资源管理类的拷贝行为要谨慎

    1. 自己实现一个资源管理类 Item 13中介绍了 “资源获取之时也是初始化之时(RAII)”的概念,这个概念被当作资源管理类的“脊柱“,也描述了auto_ptr和tr1::shared_ptr是如 ...

  10. POJ 3356 AGTC(DP求字符串编辑距离)

    给出两个长度小于1000的字符串,有三种操作,插入一个字符,删除一个字符,替换一个字符. 问A变成B所需的最少操作数(即编辑距离) 考虑DP,可以用反证法证明依次从头到尾对A,B进行匹配是不会影响答案 ...