php 實現簡單購物車功能(2)


上一篇的時候只是寫了簡單的加入購物車功能,購物車中產品的刪除、提交訂單后,庫存的減少 以及客戶賬戶的余額都沒有完善,

這一篇是接着完善上一篇的,上一篇寫到了購物車中刪除的功能了,為了使刪除的代碼少敲一些,我們要把前面

鏈接刪除頁面的時候 獲取ids的值改為獲取 arrarr的索引值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元,所以這里是沒有問題的


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM