php用session實現(xiàn)購物車的方法:首先創(chuàng)建前端代碼實現(xiàn)加入購物車動作;然后在PHP文件中實現(xiàn)購物車數(shù)據(jù)的邏輯判斷;接著根據(jù)數(shù)據(jù)加載列表;最后通過unset等函數(shù)實現(xiàn)商品的刪除或金額計算即可。
推薦:《PHP視頻教程》
PHP 使用session實現(xiàn)購物車效果(點擊按鈕添加數(shù)據(jù),根據(jù)數(shù)據(jù)生成列表,刪除選中的商品,點擊按鈕時計算金額)
效果圖
代碼很多,截取一部分
加入購物車(點擊按鈕添加session數(shù)據(jù))
// 加入購物車 function addshopping() { <?php $db = db($_GET['db']); $id = $formatData['id']; $user = $formatData['user']; // 當購物車沒有時,即沒有session數(shù)據(jù)時 if (empty($_SESSION['gwc'])) { $arr = array(array('user' => $user, 'db' => $db, 'id' => $id, 'num' => 1)); $_SESSION['gwc'] = $arr; } else { // 當購物車有數(shù)據(jù)時 $arr = $_SESSION["gwc"]; $order = false; foreach ($arr as $key => $value) { // 如果數(shù)據(jù)中有了這個數(shù)據(jù) if ($value['user'] == $user && $value['db'] == $db && $value['id'] == $id) { $index = $key; //保存這個相同數(shù)據(jù)的下標,以便操作 $order = true; //定義一個變量,看是佛有相同的數(shù)據(jù),需要注意的是,不能再這個if語句中else,否則后面的語句 //雖然會使數(shù)量加一,但是還是會多創(chuàng)建一條數(shù)據(jù),為什么,自己想想就能明白,只是當時當局者迷 } } if ($order) { // 如果該商品在購物車存在,讓數(shù)量加1 $arr[$index]['num']++; } else { // 如果該商品購物車里面不存在,造一個一維數(shù)組扔到二維里面 $arr[] = array('user' => $user, 'db' => $db, 'id' => $id, 'num' => 1); } $_SESSION["gwc"] = $arr; } ?> console.log('addshopping'); }
根據(jù)數(shù)據(jù)加載列表
<!-- 購物車列表 --> <?php foreach ($_SESSION['gwc'] as $dataList) { $clean = array(); $clean['user'] = $dataList['user']; $clean['db'] = $dataList['db']; $clean['id'] = $dataList['id']; $clean['num'] = $dataList['num']; $res = $conn->fetchRow("SELECT * FROM {$clean['db']} WHERE id={$clean['id']}"); $clean['title'] = $res['title']; $clean['price'] = $res['price']; $clean['face'] = $res['face']; ?> <p class="weui-content"> <p class="weui-panel weui-panel_access"> <p class="weui-panel__hd"><span><?php echo $clean['user']; ?> </span><a href="javascript:void(0)" class="wy-dele"><!-- 刪除 --></a></p> <p class="weui-panel__bd"> <p class="weui-media-box_appmsg pd-10"> <p class="weui-media-box__hd check-w weui-cells_checkbox"> <label class="weui-check__label" for="cart-<?php echo $clean['db'] . '-' . $clean['id'] ?>"> <p class="weui-cell__hd cat-check"> <input type="checkbox" class="weui-check" name="cartpro" id="cart-<?php echo $clean['db'] . '-' . $clean['id'] ?>"><i class="weui-icon-checked"></i> </p> </label> </p> <p class="weui-media-box__hd"><a href="pro_info.php?db=<?php echo $clean['db']; ?>&id=<?php echo $clean['id']; ?>"><img class="weui-media-box__thumb" src="<?php echo $clean['face']; ?>" alt="" style="height: 100%"></a></p> <p class="weui-media-box__bd"> <h1 class="weui-media-box__desc"><a href="pro_info.php?db=<?php echo $clean['db']; ?>&id=<?php echo $clean['id']; ?>" class="ord-pro-link"><?php echo $clean['title']; ?></a></h1> <p class="weui-media-box__desc">規(guī)格:<span>紅色</span>,<span>23</span></p> <p class="clear mg-t-10"> <p class="wy-pro-pri fl">¥<em class="num font-15 price"><?php echo $clean['price']; ?></em></p> <p class="pro-amount fr"> <!-- 購買的數(shù)量 --> <input type="hidden" name="" class="datanum" value="<?php echo $clean['num']; ?>"> <!-- 提交刪除的數(shù)據(jù) --> <input type="hidden" name="" class="rmdata" value="shopping.php?db=<?php echo $clean['db']; ?>&id=<?php echo $clean['id'];?>"> <p class="Spinner"></p> </p> </p> </p> </p> </p> </p> </p> <?php } ?>
刪除選中的商品
// echo '<pre>';// print_r($_SESSION['gwc']);// echo '</pre>';if(isset($_GET['db']) && isset($_GET['id'])){ $dataArr = $_SESSION['gwc']; foreach ($dataArr as $key => $value) { if($value['db'] == $_GET['db'] && $value['id'] == $_GET['id']){ unset($dataArr[$key]); } } $_SESSION['gwc'] = $dataArr; header("Location:shopping.php");}// echo '<pre>';// print_r( $dataArr);// echo '</pre>';
金額計算
<!-- 金額計算 --> <script> window.onload = function() { var cartproAll = document.querySelectorAll('input[name=cartpro]'); var datanum = document.querySelectorAll('.datanum'); var numAll = document.querySelectorAll('.Amount'); var DisDe = document.querySelectorAll('.DisDe'); var Increase = document.querySelectorAll('.Increase'); // 購買數(shù)量的多少 numAll.forEach((item,i) => { item.value = datanum[i].value; }) // 點擊加號 DisDe.forEach((item, i) => { item.onclick = function() { computedPrice(); } }) // 點擊減號 Increase.forEach((item, i) => { item.onclick = function() { computedPrice(); } }) // 點擊單選時計算金額 cartproAll.forEach((item, i) => { item.onclick = function() { computedPrice(); } }) } function computedPrice(){ var cartproAll = document.querySelectorAll('input[name=cartpro]'); //獲取是否點擊 var price = document.querySelectorAll('.price'); //價錢 var price_total = document.querySelector('.price_total'); //價錢總數(shù) var numAll = document.querySelectorAll('.Amount'); //數(shù)量 var total = 0; price_total.innerHTML = 0; cartproAll.forEach((item, i) => { if (item.checked == true) { total += parseFloat(price[i].innerHTML) * parseFloat(numAll[i].value); } }) price_total.innerHTML = total; } </script>