2019-08-20 购物车中相关代码
<div class="content content-nav-base shopcart-content"> <div class="main-nav"> <div class="inner-cont0"> <div class="inner-cont1 w1200"> <div class="inner-cont2"> <a href="{:U('home/category/index')}" class="active">所有商品</a> <a href="{:U('home/groupon/index')}">今日团购</a> <a href="information.html">母婴资讯</a> <a href="{:U('home/aboutus/index')}">关于我们</a> </div> </div> </div> </div> <div class="banner-bg w1200"> <h3>夏季清仓</h3> <p>宝宝被子、宝宝衣服3折起</p> </div> <div class="cart w1200"> <div class="cart-table-th"> <div class="th th-chk"> <div class="select-all"> <div class="cart-checkbox"> <input class="check-all check" id="allCheckked" type="checkbox" value="true" onclick="all_check()"> </div> <label> 全选</label> </div> </div> <div class="th th-item"> <div class="th-inner"> 商品 </div> </div> <div class="th th-price"> <div class="th-inner"> 单价 </div> </div> <div class="th th-amount"> <div class="th-inner"> 数量 </div> </div> <div class="th th-sum"> <div class="th-inner"> 小计 </div> </div> <div class="th th-op"> <div class="th-inner"> 操作 </div> </div> </div> <div class="OrderList"> <div class="order-content" id="list-cont"> <foreach name="cart_data" item="vo"> <ul class="item-content layui-clear" id="ul{$vo.cart_id}"> <input type="hidden" id="goods_number_{$vo.cart_id}" value="{$vo.goods_number}"/> <li class="th th-chk"> <div class="select-all"> <div class="cart-checkbox"> <input class="CheckBoxShop check" id="checkbox_{$vo.cart_id}" type="checkbox" num="all" name="checkbox" value="{$vo.cart_id}" onclick="sin_ch()" onmouseout="cat()"> </div> </div> </li> <li class="th th-item"> <div class="item-cont"> <a href="http://www.store.com/index.php/home/category/details?goods_id={$vo.goods_id}"><img src="{$vo.img}" alt="主图"></a> <div class="text"> <div class="title">{$vo.name}</div> <p><span>粉色</span> <span>130</span>cm</p> </div> </div> </li> <li class="th th-price"> <span class="th-su" id="price_{$vo.cart_id}">{$vo.price}</span> </li> <li class="th th-amount"> <div class="box-btn layui-clear"> <div class="less layui-btn" onclick="cart_del({$vo.cart_id})">-</div> <input class="Quantity-input" type="" name="" value="{$vo.number}" disabled="disabled" id="number_{$vo.cart_id}"> <div class="add layui-btn" onclick="cart_add({$vo.cart_id})">+</div> </div> </li> <li class="th th-sum"> <span class="sum" id="sumprice_{$vo.cart_id}">{$vo['price']*$vo['number']}</span> </li> <li class="th th-op"> <span onclick="sin_del({$vo.cart_id})">删除</span> </li> </ul> </foreach> </div> </div> <div class="FloatBarHolder layui-clear"> <div class="th th-chk"> <div class="select-all"> <div class="cart-checkbox"> <input class="check-all check" id="check_all_all" name="select-all" type="checkbox" value="true" onclick="check_all()"> </div> <label> 已选<span class="Selected-pieces" id="t_number">0</span>件</label> </div> </div> <div class="th batch-deletion"> <span onclick="all_del()">批量删除</span> </div> <div class="th Settlement"> <button class="layui-btn">结算</button> </div> <div class="th total"> <p>应付:<span class="pieces-total" id="total">0</span></p> </div> </div> </div> </div> <script> //点击加号 function cart_add(cart_id){ var price = $("#price_"+cart_id).html();//获取到单价 var number =$("#number_"+cart_id).val();//获取原数量 var new_num = parseInt(number)+1;//点击后数量+1 强制转为整形 var goods_number = $("#goods_number_"+cart_id).val();//获取库存数量 if (new_num>goods_number){ layer.alert('不能超过该商品的库存数量');//两表联查后获取商品库存 放在隐藏框 添加数量不能大于库存数量 $("#checkbox_"+cart_id).prop("checked","true");//点击哪个商品的加号就选中哪个商品 sin_ch(); }else{ $("#number_"+cart_id).val(new_num);//添加数量在不大于库存量的情况下 把新数量赋值给旧数量 //alert(goods_number); //用ajax把购物车新数量传入表中 $.ajax({ url:"upd_number", type:"POST", data:{"cart_id":cart_id,"number":new_num}, dataType:'json', success:function(result){ if (result.status==1){ var sumprice = parseFloat(price*new_num);//计算单件商品的小计价格 $("#sumprice_"+cart_id).html(sumprice);//把单件小计价格进行赋值 $("#checkbox_"+cart_id).prop("checked","true");//点击哪个商品的加号就选中哪个商品 sin_ch(); } } }) } } //点击减号 function cart_del(cart_id){ var price = $("#price_"+cart_id).html();//获取到单价 var number =$("#number_"+cart_id).val();//获取原数量 var new_num = parseInt(number)-1;//点击后数量+1 强制转为整形 if (new_num<1){ layer.alert('至少保留一件商品哦');//两表联查后获取商品库存 放在隐藏框 添加数量不能大于库存数量 $("#checkbox_"+cart_id).prop("checked","true");//点击哪个商品的加号就选中哪个商品 sin_ch(); }else{ $("#number_"+cart_id).val(new_num);//添加数量在不大于库存量的情况下 把新数量赋值给旧数量 //alert(goods_number); //用ajax把购物车新数量传入表中 $.ajax({ url:"upd_number", type:"POST", data:{"cart_id":cart_id,"number":new_num}, dataType:'json', success:function(result){ if (result.status==1){ var sumprice = parseFloat(price*new_num);//计算单件商品的小计价格 $("#sumprice_"+cart_id).html(sumprice);//把单件小计价格进行赋值 $("#checkbox_"+cart_id).prop("checked","true");//点击哪个商品的加号就选中哪个商品 sin_ch(); } } }) } } function all_use(){ var arr = Array();//定义一个空数组 用来存放被选中id var total = 0;//定义总价初始为0 var t_number = 0;//定义总数为0 $("input[name='checkbox']:checked").each(function(){ arr.push($(this).val());//把所有选中的复选框id存进数组 }); for(var i =0;i<arr.length;i++){ total +=parseFloat($("#sumprice_"+arr[i]).html());//循环被选中的 把价格都赋值给总价 t_number += parseInt($("#number_"+arr[i]).val());//选中总数 } $("#total").html(total);//把总价格赋值给显示总价位置 $("#t_number").html(t_number);//把总数量赋值给显示总数位置 } //点击单个商品前面的复选框给与显示 function sin_ch(){ all_use(); $("#check_all_all").prop("checked",true); } //点击全选 function all_check(){ var result = $("#allCheckked").is(":checked");//获取到checked属性值 var checkbox = $("input[name='checkbox']"); if (result){ for (var i=0;i<checkbox.length;i++){ checkbox[i].checked=true; } $("#check_all_all").prop("checked",true); }else{ for (var i=0;i<checkbox.length;i++){ checkbox[i].checked=false; } $("#check_all_all").removeAttr("checked"); } all_use(); } //点击全选 function check_all(){ var result = $("#check_all_all").is(":checked");//获取到checked属性值 var checkbox = $("input[name='checkbox']"); if (result){ for (var i=0;i<checkbox.length;i++){ checkbox[i].checked=true; } $("#allCheckked").prop("checked",true); }else{ for (var i=0;i<checkbox.length;i++){ checkbox[i].checked=false; } $("#allCheckked").removeAttr("checked"); } all_use(); } // function cat(){ var arr = Array();//定义一个空数组 用来存放被选中id $("input[name='checkbox']:checked").each(function(){ arr.push($(this).val());//把所有选中的复选框id存进数组 }); var data = arr.join(','); if (data==""){ $("#allCheckked").removeAttr("checked"); $("#check_all_all").removeAttr("checked"); } } </script> <script> //批量删除 function all_del(){ layer.confirm('您不再考虑下吗?', { btn: ['不考虑','留下它'] //按钮 }, function(){ var arr = Array();//定义一个空数组 用来存放被选中id $("input[name='checkbox']:checked").each(function(){ arr.push($(this).val());//把所有选中的复选框id存进数组 }); var josn = arr.join(',');//转换一下数组变为字符串 if (josn==""){ layer.alert("请选择要删除的项目"); return false; }else{ $.ajax({ url:"all_del", type:"POST", dataType:"json", data:{'cart_id':josn}, success:function(result){ if (result.status==1){ layer.alert(result.info); for (var i =0;i<arr.length;i++){ $("#ul"+arr[i]).remove(); } sin_ch(); } else{ layer.alert(result.info); } } }) } }, function(){ layer.msg('已取消'); }); } </script> <script> //单条删除 function sin_del(cart_id){ layer.confirm('您确定要删除所选宝贝吗?', { btn: ['确定','留下它'] //按钮 }, function(){ $.ajax({ url:'sin_del', data:{'cart_id':cart_id}, type:"POST", dataType:"json", success:function(result){ if (result.status==1){ layer.alert(result.info); $("#ul"+cart_id).remove(); sin_ch(); } else{ layer.alert(result.info); } } }) }, function(){ layer.msg('已取消'); }); } </script>
php部分代码
<?php namespace Home\Controller; use Think\Controller; use Home\Controller\BaseController; class CartController extends BaseController { public function index(){ $user_id = cookie('user_id'); if ($user_id==""){ $this->error('您未登录','/home/login/index',3); }else{ $condition['user_id']=$user_id; } /*两表联查下购物车 无字段冗余*/ $cart = M('cart'); $row = $cart->where($condition)->join('goods ON cart.goods_id = goods.goods_id')->select(); $this->assign('cart_data',$row); $this->display(); /*只查询购物车表 有字段冗余 $cart = M('cart'); $res = $cart->where($condition)->select(); $this->assign('cart_data',$res); $this->display(); */ } public function sin_del(){ $data['cart_id'] = I('post.cart_id'); $cart = M('cart'); $row = $cart->where($data)->delete(); if ($row){ $this->info('1','删除成功',""); }else{ $this->info('2','删除失败',""); } } //传入购物车商品数量 public function upd_number(){ $condition['cart_id']= I('post.cart_id'); $data['number']= I('post.number'); $cart = M('cart'); $res = $cart->where($condition)->save($data); if ($res){ $this->info('1','修改成功',''); }else{ $this->info('2','修改失败',''); } } public function all_del(){ $cart_id = I('post.cart_id'); $data['cart_id'] = array("in",$cart_id); $cart = M('cart'); $row = $cart->where($data)->delete(); if ($row){ $this->info('1','删除成功',""); }else{ $this->info('2','删除失败',""); } } }
整理仅供个人学习使用,若以上内容损害了您的合法权益,请联系我予以删除