我的代码:
<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");
}
?>
基本上我将我的FORM发送到同一页面,在我检查我的GET变量的表格下面,并尝试强制下载CSV文件,但不是下载,而是简单地打印我的查询内容。
我认为这是因为我的标题已经发送,但有没有办法下载文件?
答案 0 :(得分:1)
将您的PHP代码放在html表单上方。
答案 1 :(得分:0)
我在使用POST创建自己的表单/ CSV时遇到了这个问题。
想想我会用自己的例子添加更多信息。
摘自我的例子:
if($_POST[submit] === "Export" && _other_test_here_ )
{
//export CSV of all entries
include('csv-export.php');
}
else
{
HTML GOES HERE
<form method="post" name="form-export" action="" onsubmit="">
<input type="submit" name="submit" value="Export" />
<input type="hidden" name="uid" value="<?php echo($row['uid']); ?>" />
<textarea name="comment" readonly="true" ><?php echo($row['comment']); ?></textarea>
</form>
}
包含的php文件处理访问数据库并输出CSV。以自己的方式使用它。我发现很高兴能够毫无困难地从其他文件中包含它。
将IF和php置于顶端实际上导致我的Export
按钮甚至不刷新页面,访问者只需获得一个标准弹出窗口,询问他们是否要打开或保存CSV文件。非常方便。