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

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

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

具体分析如下:

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

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

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

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

详细请看强大的注释;

首先登入;

登入页面

帐号:
密码:

图:

4c6f530a4ec52e6e8a0f20874c08006a.png

登入处理:

session_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 "登入失败";

}

?>

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

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

长腿璇购物商城

代号水果名称水果价格水果产地水果库存操作

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 "

{$v[0]}{$v[1]}{$v[2]}{$v[3]}{$v[4]}

加入购物车

";

}

?>

//这里显示的是 购物车有多少产品,和产品的总价格

$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}

价格:{$aa}元";

?>

查看账户

查看购物车

来图:

1c90d6f524e1663ee90c6537e8fc726f.png

当我点击添加到购物车:

ea06af87cb91635fb2747be55bbd0f84.png

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

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

session_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

{

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")

?>

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

查看购物车

商品名称商品单价商品数量操作

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 "

{$a[1]}{$a[2]}{$v[1]} 删除 ";

// 蔬果的名称

// 单价

// 取int数量

// 这个地方也可以加索引shanchu.php?sy={$v}

}

}

?>

提交订单

上图:

eb2707dc79c0bfeab78ed7f76315731f.png

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

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

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

session_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");

//删除完跳转回去

高能!!

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

session_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]

{

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.减少水果库存:

493f35470914268135fba354a56876d2.png

2.添加订单:

c6dda17560673fc8bdf8ed4aed54261f.png

3.添加订单内容:

b_0_202006231726108403.jpg

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

73bf8fff536fd951bf5e4753d8c80a79.png

以上便是购物车内容

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

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值