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

实现简单的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.  
  25. else 
  26.  
  27. { 
  28.  
  29.   echo "登入失败"; 
  30.  
  31. } 
  32.  
  33.  
  34.  
  35. ?> 

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

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

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

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

  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.  
  17.   if($v[0]==$ids) 
  18.  
  19.   { 
  20.  
  21.     if($v[1]>1){ 
  22.  
  23.       //要删除的数据 
  24.  
  25.       $arr[$key][1]-=1; 
  26.  
  27.     } 
  28.  
  29.     else{ 
  30.  
  31.       //数量为1的情况下,移除该数组 
  32.  
  33.       unset($arr[$key]); 
  34.  
  35.     } 
  36.  
  37.   } 
  38.  
  39.  
  40.  
  41. } 
  42.  
  43.  
  44.  
  45. $_SESSION["gwc"] = $arr; 
  46.  
  47. //记得扔到session里面 
  48.  
  49. header("location:ckgwc.php"); 
  50.  
  51. //删除完跳转回去 

高能!!

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

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

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

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

1.减少水果库存:

实现简单的php购物车代码

2.添加订单:

实现简单的php购物车代码

3.添加订单内容:

实现简单的php购物车代码

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

实现简单的php购物车代码

以上便是购物车内容。

Tags: php购物车代码

分享到: