購物車功能是生活中經常使用的,這里以fruit表為例,做一個簡單的購物車:
首先要將fruit表顯示出來:
<?php session_start();?> <table width="100%" border="1" cellpadding="0" cellspacing="0"> <tr> <td>代號</td> <td>名稱</td> <td>單價</td> <td>產地</td> <td>庫存</td> <td>操作</td> </tr> <?php require "DBDA.class.php"; $db = new DBDA(); $sql = "select * from fruit"; $arr= $db->query($sql); foreach($arr as $v) { echo "<tr> <td>{$v[0]}</td> <td>{$v[1]}</td> <td>{$v[2]}</td> <td>{$v[3]}</td> <td>{$v[4]}</td> <td><a href='shengchan.php?ids={$v[0]}'>加入購物車</a></td> </tr>"; } </table>
然后是重點,在處理頁面,要有一個購物車的邏輯思維:
如果是第一次添加購物車,造一個二維數組存到SESSION里面
如果不是第一次添加,有兩種情況
1.如果該商品購物車里面不存在,造一個一維數組扔到二維里面
2.如果該商品在購物車存在,讓數量加1
<?php session_start(); $ids = $_GET["ids"]; //array('k001',2) //array(array('k001',2),array('k002',1)) //如果是第一次添加購物車,造一個二維數組存到SESSION里面 //如果不是第一次添加,有兩種情況 //1.如果該商品購物車里面不存在,造一個一維數組扔到二維里面 //2.如果該商品在購物車存在,讓數量加1 if(empty($_SESSION["gwc"])) { $arr=array(array($ids,1)); $_SESSION["gwc"]=$arr; } else { $arr = $_SESSION["gwc"]; $bs=false;//是否出現 foreach($arr as $v) { if($v[0]==$ids) { $bs = true; } } if($bs) { //2.如果該商品在購物車存在,讓數量加1 foreach($arr as $k=>$v) { if($v[0] == $ids) { $arr[$k][1]++; } } $_SESSION["gwc"] = $arr; } else { //1.如果該商品購物車里面不存在,造一個一維數組扔到二維里面 $attr = array($ids,1); $arr[] = $attr; $_SESSION["gwc"] = $arr; } } header("location:list.php");
然后再創建購物車查看頁面:
<table width="100%" border="1" cellpadding="0" cellspacing="0"> <tr> <td>代號</td> <td>名稱</td> <td>單價</td> <td>數量</td> <td>操作</td> </tr> <?php session_start(); $arr = $_SESSION["gwc"]; require "DBDA.class.php"; $db= new DBDA(); $sum= 0; foreach($arr as $k=>$v) { $v[0]; $v[1]; $sql = "select * from fruit where ids='{$v[0]}'"; $af = $db->query($sql); echo "<tr> <td>{$v[0]}</td> <td>{$af[0][1]}</td> <td>{$af[0][2]}</td> <td>{$v[1]}</td> <td><a href='shanchu.php?sy={$k}'>刪除</a></td> </tr>"; $sum = $sum +$v[1]*$af[0][2];//輸出總價格 } ?> </table> <div> <?php $gs = count($arr);//購物車里面有幾個商品 echo "該購物車里面總共有{$gs}種商品,商品的總價為:{$sum}元"; ?>
最后是刪除商品頁面:
<?php session_start(); $sy = $_GET["sy"]; //如果該水果數量大於1,減1 //如果該水果數量等於1 移除 $arr = $_SESSION["gwc"]; if($arr[$sy][1]>1) { //如果該水果數量大於1,減1 $arr[$sy][1]--; } else { unset($arr[$sy]); $arr = array_values($arr); } $_SESSION["gwc"] = $arr; header("location:kan.php");