0

テーブルからMySQLデータをCSVとしてエクスポートし、クリックでダウンロードするワードプレスプラグインでページを作成しようとしています。次のコードがあります

<?php
function fz_csv_export() {
$date = new DateTime();
$ts = $date->format( 'Y-m-d H:i:s' );
$result = array();
$result[] = array(
"first_name" => "Faison", "last_name" => "Zutavern",
"product_viewed" => "Sunglasses", "time_viewed" => $ts
);
$result[] = array(
"first_name" => "Faison", "last_name" => "Zutavern",
"product_viewed" => "Razor", "time_viewed" => $ts
);
$filename = "report-$ts.csv";
header( 'Content-Type: text/csv' );
header( 'Content-Disposition: attachment;filename='.$filename);
$fp = fopen('php://output', 'w');
$hrow = $result[0];
fputcsv($fp, array_keys($hrow));
foreach ($result as $data) {
fputcsv($fp, $data);
}
fclose($fp);
}
// Execute the function
fz_csv_export();
?>

ただし、csvをダウンロードするのではなく、データを印刷します。

4

2 に答える 2

1

http://php.net/manual/en/function.header.phpに記載されている PHP ドキュメントに従って

実際の出力が送信される前に、通常の HTML タグ、ファイル内の空白行、または PHP から header() を呼び出す必要があることに注意してください。include 関数、require 関数、または別のファイル アクセス関数を含むコードを読み取り、header() が呼び出される前に出力されるスペースまたは空の行があることは、非常に一般的なエラーです。単一の PHP/HTML ファイルを使用する場合にも、同じ問題が存在します。

スクリプトの最初にヘッダーを渡すだけで、ヘッダーが正しく渡され、ファイルをダウンロードできるようになります。

于 2013-10-08T06:23:17.667 に答える