<?php session_start(); include_once("DB.class.php"); //接受並解析前端傳過來的json,轉換成數組。 $goods_list =$_POST['order']; $goods_list= json_decode($goods_list, true); //1.獲取session信息 $arr = $_SESSION['gwc']; //得到訂單數組 $item_list = $goods_list['order']; //一維實現,每次先清空訂單。 $order = ''; //把商品信息存到訂單,而且把他們從購物車中刪除 foreach($item_list as $k=> $item){ //把商品信息存到訂單 $order[$k] = $arr[$k]; //把商品信息從購物車中刪除 unset($arr[$k]); } //更新購車的商品信息 if(!empty($arr)){ $_SESSION['gwc'] = $arr; }else{ $_SESSION['gwc'] = ''; } //最後將訂單信息存到session $_SESSION['order'] = $order; // var_dump($_SESSION); // die(); echo "OK"; exit; ?>
業務邏輯javascript
購物車頁面的結算按鈕註冊點擊事件(須要引入jquery文件)php
$('#jiesuan').click( function(){ //間接設置訂單金額 var j = $('.total_text').text(); // 去除¥符號 var order_toal = j.substring(1); //將標籤的值賦給input傳過去 $("#order_total").val(order_toal); //用插件將表單生成json,在ajax發送過去後臺 var serializeObj=$('#form1').serializeJSON(); var serializeStr=JSON.stringify(serializeObj); console.log(serializeStr); $.ajax({ cache: false, type: "POST", url : "add_to_order.php", traditional:true, data: {order : serializeStr}, //注意這裏的寫法,鍵爲order success: function(msg){ if(msg=="OK"){ alert("下單成功"); // location.reload(); //window.location.href='order.php'; }else{ alert(msg); alert("下單失敗"); } } });
<!-- 1.遍歷店鋪,查看有多少商品並遍歷。--> <div class="shop_info"> <div class="all_check"> <!--店鋪全選--> <input type='checkbox' id='shop_a' class='shopChoice'> <label for='shop_a' class='shop'></label> </div> <div class="shop_name"> 店鋪:<a href="javascript:;">蜜食專家</a> </div> </div> <?php session_start(); include_once("DB.class.php"); if(isset($_SESSION['gwc'])&&!empty($_SESSION['gwc'])){ $arr2 = $_SESSION['gwc']; foreach($arr2 as $k1=> $arr){ $goods_id = $arr['goods_id']; $sql="select * from tb_goods where id=$goods_id"; $goods = $dao->getRow($sql); $goods_num = $arr['num']; $sum = $goods['price']*$goods_num; ?> <div class="order_content"> <!-- 最低應該在這裏開始遍歷,有分割線 --> <!-- 利用上面的php變量,遍歷一個商品或sku --> <ul class="order_lists"> <li class="list_chk"> <!-- 每一個複選框的值存她的商品id或sku_id --> <?php echo "<input type='checkbox' id='checkbox_$goods_id' name='order[$goods_id]' value='$goods_id' class='son_check'>"; ?> <!-- 打勾對應文本框的id --> <?php echo "<label for='checkbox_$goods_id'></label>"; ?> </li> <li class="list_con"> <div class="list_img"><a href="javascript:;"> <?php echo "<img src='./images/$goods[img]' alt=''>";?> </a></div> <div class="list_text"><a href="javascript:;"><?php echo "$goods[goodsname]"; ?></a></div> </li> <li class="list_info"> <p>規格:默認</p> </li> <li class="list_price"> <p class="price"><?php echo '¥'."$goods[price]"; ?></p> <?php echo "<input type='hidden' value='$goods[price]'>"; ?> </li> <li class="list_amount"> <div class="amount_box"> <!-- 對商品的數量進行加減 --> <?php echo "<a href='change_number.php?goods_id=$goods_id&choice=jian' class='reduce reSty'>-</a> "; ?> <!-- 數量,要從session或數據庫中查出來 --> <?php echo "<input type='text' value='$goods_num' class='sum'>"; ?> <?php echo "<a href='change_number.php?goods_id=$goods_id&choice=jia' class='plus'>+</a> "; ?> <?php echo "<input type='hidden' value='$goods[number]'>"; ?> </div> </li> <li class="list_sum"> <p class="sum_price"><?php echo '¥'."$sum"; ?></p> </li> <li class="list_op"> <p class="del"> <?php echo "<a href='delete_goods.php?goods_id=$goods_id' class='delBtn'>刪除寶貝</a> "; ?></p> </li> </ul> </div> <?php }} else{ echo "<h1 style='margin-top:150px;text-align:center;font-size: 39px;color:#c18e2cdb;'>兄 dei,你的購物車只剩下尊嚴了!!!</h1>"; } ?>
注意事項前端
能夠給商品的checkbox類型添加name屬性是由於他有selected屬性,而其餘像hidden類型的不能給它name屬性,不然也會提交到後臺。要保持提交過去的數據不能有冗餘,須要遍歷。java
並且添加到訂單也只需商品id就行,訂單的商品數量能夠在根據key在gwc中得到。具體看add_to_order.php.jquery