上一篇的時候只是寫了簡單的加入購物車功能,購物車中產品的刪除、提交訂單后,庫存的減少 以及客戶賬戶的余額都沒有完善,
這一篇是接着完善上一篇的,上一篇寫到了購物車中刪除的功能了,為了使刪除的代碼少敲一些,我們要把前面
鏈接刪除頁面的時候 獲取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元,所以這里是沒有問題的