当前位置:首页 > 综合实例 > 列表

实现简单的php购物车代码

发布:smiling 来源: PHP粉丝网  添加日期:2022-07-11 11:47:05 浏览: 评论:0 

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

具体分析如下:

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

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

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

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

详细请看强大的注释;

首先登入;

  1. <body> 
  2.  
  3. <h1>登入页面</h1> 
  4.  
  5. <form action="dengrucl.php" method="post"
  6.  
  7.   <p>帐号:<input type="text" name="zhang"/></p> 
  8.  
  9.   <p>密码:<input type="text" name="mi"/></p> 
  10.  
  11.   <input type="submit" value="登入"/> 
  12.  
  13. </form> 
  14.  
  15. </body> 

图:

实现简单的php购物车代码

登入处理:

  1. <?php 
  2.  
  3. session_start(); 
  4.  
  5. include ("db.class.php"); 
  6.  
  7. $db = new db(); 
  8.  
  9. $zhang = $_POST["zhang"]; 
  10.  
  11. $mi = $_POST["mi"]; 
  12.  
  13. $sql = "select mi from yonghu WHERE zhang = '{$zhang}'"
  14.  
  15. $arr = $db->Query($sql); 
  16.  
  17. if(!emptyempty($zhang)&&!emptyempty($mi)&&$mi = $arr){ 
  18.  
  19.   $_SESSION["zhang"] = $zhang
  20.  
  21.   header("location:zym.php"); 
  22.  
  23.  
  24. else 
  25.  
  26.  
  27.   echo "登入失败"
  28.  
  29.  
  30.  
  31.  
  32. ?> 

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

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

  1. <body> 
  2.  
  3. <h1>长腿璇购物商城</h1> 
  4.  
  5. <table border="1" cellpadding="0" cellspacing="0" width="100%" > 
  6.  
  7.   <tr> 
  8.  
  9.     <td>代号</td> 
  10.  
  11.     <td>水果名称</td> 
  12.  
  13.     <td>水果价格</td> 
  14.  
  15.     <td>水果产地</td> 
  16.  
  17.     <td>水果库存</td> 
  18.  
  19.     <td>操作</td> 
  20.  
  21.   </tr> 
  22.  
  23.   <?php 
  24.  
  25.   session_start(); 
  26.  
  27. $_SESSION["zhang"] = "xiaoming";//不做登入的情况下,直接存sessiion 
  28.  
  29.   include ("db.class.php"); 
  30.  
  31.   $db = new db(); 
  32.  
  33.   $sql = "select * from sgbiao"
  34.  
  35.   $arr = $db->Query($sql); 
  36.  
  37.   foreach ($arr as $v
  38.  
  39.   { 
  40.  
  41.     echo " <tr> 
  42.  
  43.     <td>{$v[0]}</td> 
  44.  
  45.     <td>{$v[1]}</td> 
  46.  
  47.     <td>{$v[2]}</td> 
  48.  
  49.     <td>{$v[3]}</td> 
  50.  
  51.     <td>{$v[4]}</td> 
  52.  
  53.     <td> 
  54.  
  55.     <a href='zymcl.php?ids={$v[0]}'>加入购物车</a> 
  56.  
  57.       
  58.  
  59. </td> 
  60.  
  61.   </tr>"; 
  62.  
  63.   } 
  64.  
  65.  
  66.  
  67.   ?> 
  68.  
  69.   <?php 
  70.  
  71.   //这里显示的是 购物车有多少产品,和产品的总价格 
  72.  
  73.   $ann=array(); 
  74.  
  75.   if(!emptyempty($_SESSION["gwc"])) 
  76.  
  77.   { 
  78.  
  79.     $ann=$_SESSION["gwc"]; 
  80.  
  81.  
  82.  
  83.   } 
  84.  
  85.   $zhonglei = count($ann); 
  86.  
  87.  
  88.  
  89.   $aa=0; 
  90.  
  91.   foreach($ann as $k
  92.  
  93.   { 
  94.  
  95.  
  96.  
  97.     $k[0];//水果代号 
  98.  
  99.     $k[1];//水果数量 
  100.  
  101.     $sql1="select jiage from sgbiao where ids='{$k[0]}'"
  102.  
  103.  
  104.  
  105.     $danjia=$db->Query($sql1); 
  106.  
  107.  
  108.  
  109.     foreach($danjia as $n
  110.  
  111.     { 
  112.  
  113.  
  114.  
  115.       $aa=$aa + $n[0]*$k[1]; 
  116.  
  117.     } 
  118.  
  119.  
  120.  
  121.  
  122.  
  123.   } 
  124.  
  125.   echo"数量:{$zhonglei}<br/> 
  126.  
  127. 价格:<mark>{$aa}元"; 
  128.  
  129.   ?> 
  130.  
  131. </table> 
  132.  
  133.  
  134.  
  135. <a href="tijiao.php" rel="external nofollow" rel="external nofollow" >查看账户</a> 
  136.  
  137. <a href="ckgwc.php" rel="external nofollow" >查看购物车</a> 
  138.  
  139.  
  140.  
  141. </body> 

来图:

实现简单的php购物车代码

当我点击添加到购物车:

实现简单的php购物车代码

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

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

  1. <?php 
  2.  
  3. session_start(); 
  4.  
  5. // 
  6.  
  7. $ids = $_GET["ids"]; 
  8.  
  9. if(emptyempty($_SESSION["gwc"])) 
  10.  
  11.  
  12.   //如果点击的购物车是空的(第一次添加) 
  13.  
  14.  
  15.  
  16.   //如果购物车里是空的,造二维数组, 
  17.  
  18.   $arr = array
  19.  
  20.     array($ids,1) 
  21.  
  22.     //一维数组,取ids,第一次点击增加一个 
  23.  
  24.   ); 
  25.  
  26.   $_SESSION["gwc"]=$arr
  27.  
  28.   //扔到session里面 
  29.  
  30.  
  31. else 
  32.  
  33.   //这里不是第一次点击 
  34.  
  35.  
  36.   //先判断购物车里是否已经有了该商品,用$ids 
  37.  
  38.   $arr = $_SESSION["gwc"]; 
  39.  
  40.   //把购物车的状态取出来 
  41.  
  42.  
  43.  
  44.   $chuxian = false; 
  45.  
  46. //定义一个变量;用来表示是否出现,默认是未出现 
  47.  
  48.   foreach ($arr as $v) { 
  49.  
  50.     //便利他 
  51.  
  52.     //如果这里面有这件商品 
  53.  
  54.     if ($v[0] == $ids//如果取过来的$v[0](商品的代号)等于$ids那么就证明购物车中已经有了这一件商品 
  55.  
  56.     { 
  57.  
  58.       $chuxian = true; 
  59.  
  60.       //如果出现,直接把chuxian改成true 
  61.  
  62.  
  63.  
  64.     } 
  65.  
  66.   } 
  67.  
  68.   if($chuxian
  69.  
  70.   { 
  71.  
  72.     //购物车中有此商品 
  73.  
  74.     for($i=0;$i<count($arr);$i++) 
  75.  
  76.     { 
  77.  
  78.       if($arr[$i][0] == $ids
  79.  
  80.       { 
  81.  
  82.         //把点到的商品编号加1 
  83.  
  84.         $arr[$i][1] += 1; 
  85.  
  86.       } 
  87.  
  88.     } 
  89.  
  90.     $_SESSION["gwc"] = $arr
  91.  
  92.  
  93.  
  94.   } 
  95.  
  96.     else 
  97.  
  98.       { 
  99.  
  100.         //这里就只剩下:购物车里有东西,但是并没有这件商品 
  101.  
  102.         $asg = array($ids,1); 
  103.  
  104.         //设一个小数组 
  105.  
  106.         $arr[] = $asg
  107.  
  108.         $_SESSION["gwc"]=$arr
  109.  
  110.       } 
  111.  
  112.  
  113.  
  114.  
  115. header("location:zym.php"
  116.  
  117.  
  118.  
  119.  
  120.  
  121. ?> 

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

  1. <body> 
  2.  
  3. <h1>查看购物车</h1> 
  4.  
  5. <table width="100%" border="1"cellspacing="0" cellpadding="0"
  6.  
  7.   <tr> 
  8.  
  9.     <td>商品名称</td> 
  10.  
  11.     <td>商品单价</td> 
  12.  
  13.     <td>商品数量</td> 
  14.  
  15.     <td>操作</td> 
  16.  
  17.   </tr> 
  18.  
  19.  
  20.  
  21.   <?php 
  22.  
  23.   session_start(); 
  24.  
  25.   if(!emptyempty($_SESSION["gwc"])) 
  26.  
  27.   { 
  28.  
  29.     $arr = array(); 
  30.  
  31.     $arr = $_SESSION["gwc"]; 
  32.  
  33.     //造数组 
  34.  
  35.   } 
  36.  
  37.   include ('db.class.php'); 
  38.  
  39.   $db = new db(); 
  40.  
  41.   foreach ($arr as $v
  42.  
  43.   { 
  44.  
  45.     global $db
  46.  
  47.     $sql = "select * from sgbiao WHERE ids = '{$v[0]}'"
  48.  
  49.     $att = $db->query($sql); 
  50.  
  51.     foreach ($att as $a
  52.  
  53.     { 
  54.  
  55.       echo "<tr> 
  56.  
  57.     <td>{$a[1]}</td> 
  58.  
  59.     <td>{$a[2]}</td> 
  60.  
  61.     <td>{$v[1]}</td> 
  62.  
  63.     <td><a href='shanchu.php?ids={$a[0]}'>删除</a> </td> 
  64.  
  65.   </tr> "; 
  66.  
  67. //      蔬果的名称 
  68.  
  69. //      单价 
  70.  
  71. //      取int数量 
  72.  
  73. //    这个地方也可以加索引shanchu.php?sy={$v} 
  74.  
  75.     } 
  76.  
  77.   } 
  78.  
  79.   ?> 
  80.  
  81.  
  82.  
  83. </table> 
  84.  
  85.  
  86.  
  87. <a href="tijiao.php" rel="external nofollow" rel="external nofollow" >提交订单</a> 
  88.  
  89. </body> 

上图:

实现简单的php购物车代码

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

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

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

  1. <?php 
  2.  
  3. session_start(); 
  4.  
  5. $ids = $_GET["ids"]; 
  6.  
  7. $arr = $_SESSION["gwc"]; 
  8.  
  9. //var_dump($arr); 
  10.  
  11. //取索引2(数量) 
  12.  
  13. foreach ($arr as $key=>$v
  14.  
  15.  
  16.   if($v[0]==$ids
  17.  
  18.   { 
  19.  
  20.     if($v[1]>1){ 
  21.  
  22.       //要删除的数据 
  23.  
  24.       $arr[$key][1]-=1; 
  25.  
  26.     } 
  27.  
  28.     else
  29.  
  30.       //数量为1的情况下,移除该数组 
  31.  
  32.       unset($arr[$key]); 
  33.  
  34.     } 
  35.  
  36.   } 
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43. $_SESSION["gwc"] = $arr
  44.  
  45. //记得扔到session里面 
  46.  
  47. header("location:ckgwc.php"); 
  48.  
  49. //删除完跳转回去 

高能!!

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

  1. <?php 
  2.  
  3. session_start(); 
  4.  
  5. include ("db.class.php"); 
  6.  
  7. $db = new db(); 
  8.  
  9.  
  10.  
  11. //判断用余额是否满足 
  12.  
  13. $zhang = $_SESSION["zhang"]; 
  14.  
  15. //获取到用户名 
  16.  
  17. $sye = "select zhanghu from yonghu WHERE zhang = '{$zhang}'"
  18.  
  19. $ye = $db->query($sye); 
  20.  
  21. $ye[0][0];//这是余额 
  22.  
  23.  
  24.  
  25. $ann=array(); 
  26.  
  27. if(!emptyempty($_SESSION["gwc"])) 
  28.  
  29.  
  30.   $ann=$_SESSION["gwc"]; 
  31.  
  32.  
  33.  
  34.  
  35. $zhonglei = count($ann); 
  36.  
  37.  
  38.  
  39. $aa=0;//总价格 
  40.  
  41. foreach($ann as $k
  42.  
  43.  
  44.  
  45.  
  46.   $k[0];//水果代号 
  47.  
  48.   $k[1];//水果数量 
  49.  
  50.   $sql1="select jiage from sgbiao where ids='{$k[0]}'"
  51.  
  52.  
  53.  
  54.   $danjia=$db->Query($sql1); 
  55.  
  56.  
  57.  
  58.   foreach($danjia as $n
  59.  
  60.   { 
  61.  
  62.  
  63.  
  64.     $aa=$aa + $n[0]*$k[1]; 
  65.  
  66.   } 
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73. //判断余额是否满足 
  74.  
  75. if($ye[0][0]>=$aa
  76.  
  77.  
  78.   //钱够,判断库存 
  79.  
  80.  
  81.  
  82.   foreach($ann as $v
  83.  
  84.   { 
  85.  
  86.     $skc = "select sgname,kucun from sgbiao WHERE ids='{$v[0]}'"
  87.  
  88.     //水果代号$v[0] 
  89.  
  90.     $akc = $db->query($skc); 
  91.  
  92.     $akc[0][1];//库存 
  93.  
  94.     //比较是否满足库存 
  95.  
  96.     if($akc[0][1]<$v[1]) 
  97.  
  98.     { 
  99.  
  100.       echo "{$akc[0][0]}库存不足"
  101.  
  102.       //退出 
  103.  
  104.       exit
  105.  
  106.     } 
  107.  
  108.  
  109.  
  110.   } 
  111.  
  112. //提交订单: 
  113.  
  114. //i.  从用户账户中扣除本次购买的总价格 
  115.  
  116. //ii.  从商品库存中扣除本次每种商品的购买数量 
  117.  
  118. //iii.  向订单表和订单内容表中加入本次购买的商品信息 
  119.  
  120.   //扣除账户余额 
  121.  
  122. $skcye = "update yonghu set zhanghu = zhanghu-{$aa} WHERE zhang = '{$zhang}'"
  123.  
  124.   $db->query($skcye,0); 
  125.  
  126.   //扣除库存 
  127.  
  128.   foreach($ann as $v
  129.  
  130.   { 
  131.  
  132.     $skckc = "update sgbiao set kucun = kucun-{$v[1]} WHERE ids='{$v[0]}'"
  133.  
  134.     //水果代号$v[0] 
  135.  
  136.     $db->query($skckc,0); 
  137.  
  138.   } 
  139.  
  140.   //添加订单信息 
  141.  
  142.   //取当前时间 
  143.  
  144.   $time = time(); 
  145.  
  146.   //自动生成订单号 
  147.  
  148.   $ddh = date("YmdHis"); 
  149.  
  150.   $sdd = "insert into dingdan VALUES ('{$ddh}','$zhang','$time')"
  151.  
  152.   $db->query($sdd,0); 
  153.  
  154.   //添加订单内容 
  155.  
  156.   foreach ($ann as $v
  157.  
  158.   { 
  159.  
  160.     $sddxq = "insert into ddneirong VALUES ('','$ddh','{$v[0]}','{$v[1]}')"
  161.  
  162.     $db->query($sddxq,0); 
  163.  
  164.   } 
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171. else 
  172.  
  173.  
  174.   echo "钱不够"
  175.  
  176.   exit
  177.  

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

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

1.减少水果库存:

实现简单的php购物车代码

2.添加订单:

实现简单的php购物车代码

3.添加订单内容:

实现简单的php购物车代码

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

实现简单的php购物车代码

以上便是购物车内容。

Tags: php购物车代码

分享到: