duanlv1366 2013-10-02 16:00
浏览 26
已采纳

通过GET将CSV文件下载到同一页面

My code:

<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");
}
?>

Basically I'm sending my FORM to the same page, below the form I check for my GET variables and try to force a CSV file download, but instead of downloading, the content of my query is simply being printed.

I think this is because my headers have already been sent, but is there a way to download the file at all?

  • 写回答

2条回答 默认 最新

  • doutiao2540 2013-10-02 16:03
    关注

    Put your php code above the html form.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?