购物车结算add_to_order.php,<?phpsession_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;?>
业务逻辑
从购物车中点击结算,即是把商品信息从购物车中转移到订单中。
技术点:接受的方式是json。要先在前台以json的形式传过来,这里再把它解析为数组,再运用。
购物车页面的结算按钮注册点击事件(需要引入jquery文件)
$('#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("下单失败");
}
}
});
这是表单中的一部分,展示如何把选中的商品传过去。关键在于checbox键值设置:在foreache循环中,所以键值得有变量混合进去。(仅展示代码,复制有样式问题)
<?phpsession_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;?>
<?php echo ""; ?>
<?php echo ""; ?>
-
<?php echo "";?>
<?php echo "$goods[goodsname]"; ?> 规格:默认
<?php echo ""; ?>
<?php echo "删除宝贝 "; ?>
<?php }}else{echo "
兄
dei,你的购物车只剩下尊严了!!!";
}?>
注意事项
可以给商品的checkbox类型添加name属性是因为他有selected属性,而其他像hidden类型的不能给它name属性,否则也会提交到后台。要保持提交过去的数据不能有冗余,需要遍历。
而且添加到订单也只需商品id就行,订单的商品数量可以在根据key在gwc中获得。具体看add_to_order.php.
http://www.dengb.com/PHPjc/1355315.htmlwww.dengb.comtruehttp://www.dengb.com/PHPjc/1355315.htmlTechArticle购物车结算add_to_order.php, ? php session_start (); include_once ("DB.class.php" ); // 接受并解析前端传过来的json,转换成数组。 $goods_list = $_POST ['orde...