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>&nbsp;&nbsp;全选</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>&nbsp;&nbsp;已选<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','删除失败',"");
        }

    }
}

 

posted @ 2019-08-20 17:39  筏愫  阅读(238)  评论(0编辑  收藏  举报