0

postgresql データベースへのさまざまなクエリを含むいくつかの php ファイルがあります。これらのファイルは約 16 個あります。これらの各ファイルは、ファイル内のクエリに基づいて異なるデータ セットを返します。クエリが作成された後、ファイルをダウンロードできます。ダウンロードは Excel ファイルになります。私の質問は、リンクを 1 つだけ持つことができ、それをクリックすると、これらの 16 個のファイルすべてが一度にダウンロードされるように、php でダウンロードをトリガーするにはどうすればよいかということです。各ファイルをその上にダウンロードしたくありません。または、チェックボックスを使用して、ダウンロードするファイルを選択することもできます。私の質問が十分に明確であることを願っています。

たとえば、私はこのコードで 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 にエクスポートされます。私の質問は、リンクを 1 つだけ持つことができ、それをクリックすると、これらの 16 個のファイルすべてが一度にダウンロードされるように、php でダウンロードをトリガーするにはどうすればよいかということです。各ファイルをその上にダウンロードしたくありません。または、チェックボックスを使用して、ダウンロードするファイルを選択することもできます。

4

1 に答える 1

0

Excel ファイルをダウンロードする場合は、16 個のワークシート (データセットごとに 1 つずつ) を含む単一の Excel ファイルをダウンロードしないでください。

または、すべてのファイルをまとめて zip し、zip をダウンロードします。

于 2013-01-29T11:30:31.077 に答える