<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','删除失败',"");
}
}
}