ecshop购物车批量删除商品

ecshop默认的购物车中,每件商品后面有一个删除按钮,可以删除所选商品。但是当购物车中商品很多,用户希望一次性删除多个商品,是不能实现的。

需要修改的文件为:

1、模板目录下的flow.dwt文件

2、站点根目录下的flow.php文件


第一步:修改flow.dwt文件,在每一个商品前增加单选框,并增加全选功能

在购物车商品循环表格中增加一列

<th bgcolor="#F7F7F7" width="8%" align=center><input type="checkbox" autocomplete="off" id="chkAll" name="chkAll" onclick="return chkAll_onclick()" style="vertical-align:middle">全选</th>
<td bgcolor="#FFFFFF" align="center" ><input type="checkbox" autocomplete="off" name="sel_cartgoods[]" value="{$goods.rec_id}" id="sel_cartgoods_{$goods.rec_id}" checked=checked onclick="select_cart_goods();"></td>

第二步:增加批量删除按钮

<a class="delete_sel" href="javascript:void(0)" onclick="selcart_delete();">删除选中商品</a>

第三步:增加JavaScript内容

<script type="text/javascript">
  function chkAll_onclick() 
  {
    for (var i=0;i<document.formCart.elements.length;i++)
    {
    var e = document.formCart.elements[i];
    if (e.name != 'chkAll') e.checked = document.formCart.chkAll.checked;
    }
  }
  function selcart_delete()
  {
        var sel_goods = new Array();
        var obj_cartgoods = document.getElementsByName("sel_cartgoods[]");
        var j=0;
        for (i=0;i<obj_cartgoods.length;i++)
          {
            if(obj_cartgoods[i].checked == true)
              { 
                sel_goods[j] = obj_cartgoods[i].value;
                j++;
              }
          }
        if (j>0)
        {
          if (confirm('确认将这些商品从购物车中移除么?')){
          location.href='flow.php?step=drop_goods&id='+sel_goods;          
          }
       }
       else
      {   
      alert('您还没有选择商品哦!');
      return false;
      }
  }
  </script>

第四步:修改根目录下的flow.php文件中的flow_drop_cart_goods函数

$sql = "SELECT * FROM " .$GLOBALS['ecs']->table('cart'). " WHERE rec_id = '$id'";

修改为:

$sql = "SELECT * FROM " .$GLOBALS['ecs']->table('cart'). " WHERE rec_id in ('$id')";

第五步:修改flow.php文件

$rec_id = intval($_GET['id']);

修改为:

$rec_id = $_GET['id'];