我有几个php文件,其中包含对postgresql数据库的不同查询。大约有16个这样的文件。这些文件中的每一个都基于文件中的查询返回不同的数据集。查询完成后,您可以下载该文件,下载到excel文件中。 我的问题是如何在php中触发下载,以便我只能有一个链接,点击后,所有这16个文件都会立即下载。我不想在其上下载每个文件。或者更好的是我可以有复选框,我选择我想下载的文件。我希望我的问题很清楚。
例如,我有一个名为export_a.php的文件,其代码为
<?php require_once('connections/pgconn.php');
function cleanData(&$str)
{
$str = preg_replace("/\t/", "\\t", $str);
$str = preg_replace("/\r?\n/", "\\n", $str);
if(strstr($str, '"')) $str = '"' . str_replace('"', '""', $str) . '"';
}
// filename for download
$filename = "eastafrica_revenue_daily" . date('Ymd') . ".xls";
header("Content-Disposition: attachment; filename=\"$filename\"");
header("Content-Type: application/vnd.ms-excel");
$flag = false;
$result = pg_query("SELECT to_char (a.CALLDATE,'yyyymmdd') as transdate,
sum(a.alltaxcost::integer) AS revenue,
COUNT (DISTINCT a.IDENTIFIANT) AS distinct_callers,
a.zoneiddest as country_code,b.country
FROM cdr_data a, COUNTRY_CODES b
WHERE a.CALLSUBCLASS = '002'
AND a.CALLCLASS = '008'
and a.zoneiddest::integer > 0
AND SUBSTR (a.CALLEDNUMBER, 1, 2) NOT IN
('77', '78', '75', '70', '71', '41', '31', '39', '76','79')
and substr(a.zoneiddest,1,3) in ('254','255','211','257','250')
and trim(a.zoneiddest) = trim(b.country_code)
GROUP BY to_char (a.CALLDATE,'yyyymmdd') ,a.zoneiddest,b.country
ORDER BY 1") or die('Query failed!');
while(false !== ($row = pg_fetch_assoc($result))) {
if(!$flag) {
// display field/column names as first row
echo implode("\t", array_keys($row)) . "\r\n";
$flag = true;
}
array_walk($row, 'cleanData');
echo implode("\t", array_values($row)) . "\r\n";
}
exit;
?>
然后我有另一个文件说export_b.php与另一个查询。当在某个页面上单击链接时,请说出进行此查询的a.php,它将导出到excel。 我的问题是如何在php中触发下载,以便我只能有一个链接,点击后,所有这16个文件都会立即下载。我不想在其上下载每个文件。或者更好的是我可以拥有复选框,然后选择我想要下载的文件。
答案 0 :(得分:1)
如果要下载Excel文件,为什么不下载包含16个工作表的单个Excel文件(每个数据集一个);
或者将所有文件压缩在一起,然后下载zip