私のコード:
<form action="" method="GET">
<p><input name="date_start" type="text" id="datestart" /> to
<input name="date_end" type="text" id="dateend" /></p>
<button type="submit">Generate!</button>
</form>
<?php
if ($_GET["date_start"] && $_GET["date_end"]) {
$users_list = mysql_query("my query", $dbc) or die(mysql_error());
$output = fopen("php://output", 'w') or die("Can't open php://output");
header("Content-Type:application/csv");
header("Content-Disposition:attachment;filename=user_list.csv");
fputcsv($output, array("First Name", "Last Name", "Email", "Mobile", "Site"));
while ($row = mysql_fetch_assoc($users_list)) {
fputcsv($output, $row);
}
fclose($output) or die("Can't close php://output");
}
?>
基本的に、フォームを同じページに送信しています。フォームの下で GET 変数を確認し、CSV ファイルのダウンロードを強制しようとしていますが、ダウンロードする代わりに、クエリの内容が単に印刷されています。
これは、ヘッダーが既に送信されているためだと思いますが、ファイルをダウンロードする方法はありますか?