ecshop将商品批量加入收藏的方法

时间:2016-05-1756举报小编:admin

    ecshop将商品批量加入收藏的思路:在它自带单个收藏的原理上,加个循环就可解决了。

    1. 首先循环出要搜藏商品的id,用一个符号隔开,如 ‘12|5|8|’,到时候传入php处理时候再用 explode() 函数按" |" 分割开来,然后循环这些id,就可以实现了。
    加入收藏夹 经过循环后就可以得到类似 加入收藏夹 的代码了。

    2. 然后在 common.js 大概第130行有个 collect(goodsId) 函数,就是添加到收藏的函数,可以仿照它在它下面添加一个:
    /* *
     *   批量添加商品到收藏夹
     */
    function collect_all(AllId){
    Ajax.call('user.php?act=collect_all', 'id=' + AllId, collectResponse, 'GET', 'JSON');
    }

    3. 最后在 user.php 里面加入下面这段代码就可以了。
    /* 批量添加收藏商品(ajax) */
    elseif ($action == 'collect_all'){
    include_once(ROOT_PATH .'includes/cls_json.php');
    $json = new JSON();
    $result = array('error' => 0, 'message' => '');
    $goods_id = $_GET['id'];
    $goods_id = explode("|",$goods_id);
    $goods_id = array_filter($goods_id);    //过滤掉数组中空的值

    if (!isset($_SESSION['user_id']) || $_SESSION['user_id'] == 0){
    $result['error'] = 1;
    $result['message'] = $_LANG['login_please'];
    die($json->encode($result));
    }
    else{
    foreach($goods_id as $goods_id){
    /* 检查是否已经存在于用户的收藏夹 */
    $sql = "SELECT COUNT(*) FROM " .$GLOBALS['ecs']->table('collect_goods') .
    " WHERE user_id='$_SESSION[user_id]' AND goods_id = '$goods_id'";
    if ($GLOBALS['db']->GetOne($sql) > 0){}
    else{
    $time = gmtime();
    $sql = "INSERT INTO " .$GLOBALS['ecs']->table('collect_goods'). " (user_id, goods_id, add_time) " .
    " VALUES ('$_SESSION[user_id]', '$goods_id', '$time')";

    if ($GLOBALS['db']->query($sql) === false){
    $result['error'] = 1;
    $result['message'] = $GLOBALS['db']->errorMsg();
    die($json->encode($result));
    }
    }
    }
    $result['error'] = 0;
    $result['message'] = $GLOBALS['_LANG']['collect_success'];
    die($json->encode($result));
    }
    }