ecshop将商品批量加入收藏的思路:在它自带单个收藏的原理上,加个循环就可解决了。
1. 首先循环出要搜藏商品的id,用一个符号隔开,如 ‘12|5|8|’,到时候传入php处理时候再用 explode(" 函数按“|”分割开来,然后循环这些id,就可以实现了。
<a class="joinSave png" href="javascript:collect_all('{foreach from=$goods item=g}{$g.goods_id}|{/foreach}'"">加入收藏夹</a> 经过循环后就可以得到类似 <a class="joinSave png" href="javascript:collect_all('12|5|8|'"">加入收藏夹</a> 的代码了。
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 里面加入下面这段代码就可以了。
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"";
}
}



