2012-06-19 103 views
0

我正在構建一個代碼,它可以幫助我檢索查詢並將其導出爲一個csv,它一切正常,但是id做的是,如果我去/query.php立即下載csv文件,而我想點擊它下載。導出查詢爲csv需要改進

你能幫我解決這個問題嗎?

這是代碼..

$query = sprintf('SELECT * FROM hostess'); 
    $result = mysql_query($query, $conn) or die(mysql_error($conn)); 

    header('Content-Type: text/csv'); 
    header('Content-Disposition: attachment;filename=export.csv'); 

    $row = mysql_fetch_assoc($result); 
    if ($row) 
    { 
    echocsv(array_keys($row)); 
    } 

    while ($row) 
    { 
    echocsv($row); 
    $row = mysql_fetch_assoc($result); 
    } 

    function echocsv($fields) 
    { 
    $separator = ''; 
    foreach ($fields as $field) 
    { 
     if (preg_match('/\\r|\\n|,|"/', $field)) 
     { 
     $field = '"' . str_replace('"', '""', $field) . '"'; 
     } 
     echo $separator . $field; 
     $separator = ','; 
    } 
    echo "\r\n"; 
    } 
?> 
+0

嗯,我知道這個劇本。 –

+0

這個腳本不是我製作的,在線閱讀,我發現了一個解決方案.. –

+1

@SalmanA哈哈!我只是看着它。有趣的..... – Hassan

回答

2

設置其他頁面的鏈接。這樣,您可以從任何頁面鏈接到CSV文件。

+0

是的當然,但在查詢中我需要插入一個變量,我從窗體中獲取,這意味着我需要把這樣的東西:從hostess等選擇$檢查等等。我從某處獲得它.. –

+0

使用HTML表單。然後使用'$ _GET('whatever')'來訪問變量。 – Hassan

+0

嘿好吧,但我怎麼做才能下載csv文件,只有當我連接它..不立即.. –

3

創建一個包含CSV生成腳本鏈接的頁面。

編輯

您可以創建一個參數傳遞使用的查詢字符串的CSV腳本簡單的HTML表單。例如:

<form action="export.php" method="get" target="_blank"> 
    <input type="text" name="param1"> 
    <input type="text" name="param2"> 
    ... 
    <input type="submit"> 
</form> 

您的CSV導出腳本需要稍加修改:它應該處理的查詢字符串變量來構建查詢。喜歡的東西:

$where = "1 = 1"; 
if ($param1 = filter_input(INPUT_GET, "param1")) 
{ 
    $where .= " AND param1 = '" . mysql_real_escape_string($param1) . "'"; 
} 
if ($param2 = filter_input(INPUT_GET, "param2")) 
{ 
    $where .= " AND param2 = '" . mysql_real_escape_string($param2) . "'"; 
} 
... 
$query = sprintf('SELECT * FROM hostess WHERE $where'); 

當您提交表單,它會要求出口頁面傳遞參數的查詢字符串(例如export.php參數1 = foo的&參數2 =棒?)。該腳本將分派一個CSV文件。將target=_blank屬性添加到窗體上,以便CSV文件加載到新的選項卡/窗口中。

+0

+1你一定要得到這個,看你在問題中寫腳本。 – Hassan