时间:2021-07-01 10:21:17 帮助过:6人阅读
$smarty->assign('action_link', array('text' => $_LANG['replenish'], 'href' => 'virtual_card.php?act=replenish&goods_id='.$_REQUEST['goods_id']));
按照ecshop的习惯,需要修改语言包文件(语言包文件名和对应的这个php文件名相同,只是在语言包目录下)
$_LANG['Notforsale'] = '未出售导出xls';
$_LANG['Hasforsale'] = '已出售导出xls';
在大约180行那句话下面添加如下(主要是修改一下act后的参数,用于到文件中来处理数据)
比较重要的是forsale=has和forsale=not这两个参数,将用来区别是要导出已经出售还是要导出未出售的
$smarty->assign('Notforsale', array('text' => $_LANG['Notforsale'], 'href' => 'virtual_card.php?act=forsale&forsale=not&goods_id='.$_REQUEST['goods_id'])); $smarty->assign('Hasforsale', array('text' => $_LANG['Hasforsale'], 'href' => 'virtual_card.php?act=forsale&forsale=has&goods_id='.$_REQUEST['goods_id']));
具体代码如下:
/*------------------------------------------------------ */ //-- 导出未出售或已出售的虚拟商品到xls /*------------------------------------------------------ */ elseif ($_REQUEST['act'] == 'forsale') { $forsale = empty($_REQUEST['forsale']) ? "" : trim($_REQUEST['forsale']); //首先判断$forsale是否有值被传入 if($forsale != ""){ $fielname = ""; $goods_id = empty($_REQUEST['goods_id']) ? 0 : intval($_REQUEST['goods_id']); //has为已出售,not为未出售 if($forsale == 'has'){ $fielname = "已出售商品"; $getCurrentGoodsListsql = "SELECT card_id, goods_id, card_sn, card_password, end_date, is_saled, order_sn, crc32 FROM " . $GLOBALS['ecs']->table('virtual_card') . " WHERE goods_id = " . $goods_id . " and is_saled = 1" ; } else if($forsale == 'not'){ $fielname = "未出售商品"; $getCurrentGoodsListsql = "SELECT card_id, goods_id, card_sn, card_password, end_date, is_saled, order_sn, crc32 FROM " . $GLOBALS['ecs']->table('virtual_card') . " WHERE goods_id = " . $goods_id . " and is_saled = 0" ; } $currentGoodsList = $GLOBALS['db']->getAll($getCurrentGoodsListsql); $arr = array(); foreach ($currentGoodsList AS $key => $row) { if ($row['crc32'] == 0 || $row['crc32'] == crc32(AUTH_KEY)) { $row['card_sn'] = decrypt($row['card_sn']); $row['card_password'] = decrypt($row['card_password']); } elseif ($row['crc32'] == crc32(OLD_AUTH_KEY)) { $row['card_sn'] = decrypt($row['card_sn'], OLD_AUTH_KEY); $row['card_password'] = decrypt($row['card_password'], OLD_AUTH_KEY); } else { $row['card_sn'] = '***'; $row['card_password'] = '***'; } $row['end_date'] = $row['end_date'] == 0 ? '' : date($GLOBALS['_CFG']['date_format'], $row['end_date']); $arr[] = $row; } header("Content-Type: application/vnd.ms-execl"); //定义文件的内容类型 header("Content-Disposition: attachment; filename={$fielname}.xls"); header("Pragma: no-cache"); //不缓存 header("Expires: 0");//将内容输出到第一个工作簿 $data = "数据库编号\t商品编号\t卡片序号\t卡片密码\t截止使用日期\t是否已经出售(1:已经出售0:未出售)\t订单号\t加密编码(客户无用,可删除)\t\n"; foreach($arr as $key=>$val){ foreach ($val as $k => $v) { $data .= $v . "\t"; } $data .= "\n"; } echo iconv("UTF-8","GB2312//IGNORE",$data); //echo "
";var_dump($data);echo "";exit(); } }
以上就介绍了ecshop给虚拟商品添加出售和未出售的导出xlc,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。