2012-02-15 63 views
0

我試圖從一個PHP頁面傳遞一個變量到另一個PHP頁面,這將觸發一個Excel下載。但是,我無法弄清楚如何傳遞變量並仍然有下載觸發器。我明白我創建Excel文件的PHP頁面不能有任何變量傳遞給它,否則下載不會觸發。如何通過PHP變量到MySQL查詢創建一個Excel文檔下載

例如,我想做到以下幾點(很簡單的例子):

variable.php

<?php 
$date = '2012-02-15'; 
echo '<input type="text" id="date" value="'.$date.'"/>'; 
echo '<span onclick="excelDownload()">Click</span>'; 
?> 

passing.js

function excelDownload(str) 
{ 
    Ajax... 
    var date = document.getElementById('date').value; 
    var queryString = "?date=" + date; 
    xmlhttp.open("GET", "excel.php" + queryString, true); 
    Ajax.... 
} 

excel.php

<?php 
Connect to database... 
$date = $_GET['date']; 
$file = "Names: "; 
$result = mysql_query("SELECT * FROM Something WHERE date_field = '$date'"); 
$data = mysql_fetch_array($result); 
$file.= $data['names']." "; 
header("Content-type: application/octet-stream"); 
header("Content-Disposition: attachment; filename=names.xls"); 
header("Pragma: no-cache"); 
header("Expires: 0"); 
print $file; 
?> 

不幸有趣的是,$ _GET [date']變量導致excel.php不能下載。我已經能夠在excel.php頁面中編寫靜態的MySql查詢了,所以我不必傳遞任何變量。然而,我現在需要創建動態的excel下載,但我不夠強大的PHP來找出我的選擇。在附註中,我使用Ajax,不使用「提交」。這會是一個問題嗎?

+0

_I明白,它創建Excel文件我的PHP頁面不能傳遞給它的任何變量,或者下載不會trigger._爲什麼?另外,你是否得到任何錯誤或什麼? – 2012-02-15 11:40:49

+0

我沒有收到任何錯誤,而是在我觸發onclick事件後會出現一個新窗口,並且不會執行下載提示。我在某處讀到帶有excel頭文件的php頁面不能有任何數據進入它,以便下載觸發。如果我將'2012-02-15'寫入mysql查詢,而不是將變量傳遞給它,則會觸發下載提示。 – user175328 2012-02-15 12:00:27

+0

重申我的問題:如何傳遞一個變量來運行MySql查詢,然後用MySql查詢結果觸發下載一個Excel文件?我的問題是,你不能在PHP頭之前輸出任何東西。 – user175328 2012-02-16 05:33:27

回答

0

我想出了我的問題,並希望分享我的發現來解決這個問題。基本上,我應該在我的問題上更詳細。我的Ajax函數需要進行一些調整,以便變量可以通過並允許標題觸發下載。

我是用我的Ajax功能如下:

Ajax... 
{ 
    if (xmlhttp.readyState == 4) 
    { 
    //nothing to allow download to trigger 
    } 
} 
var date = document.getElementById('date').value; 
var queryString = "?date=" + date; 
xmlhttp.open("GET", "excel.php" + queryString, true): 
xmlhttp.send(null); 

不過,我應該用這樣的:

Ajax... 
{ 
    if (xmlhttp.readyState == 4) 
    { 
    window.location = "excel.php" + queryString; 
    } 
} 
var date = document.getElementById('date').value; 
var queryString = "?date=" + date; 
xmlhttp.open("GET", "excel.php" + queryString, true): 
xmlhttp.send(null); 

雖然我在想我的問題有頭前與輸出做( ),真正的問題是傳遞變量。

+0

這裏有些東西似乎不對.. window.location會將你的頁面重定向到指定的URL。這是一個非Ajax請求將被解僱。無論如何,你似乎並沒有使用AJAX的響應...... – 2012-02-16 07:34:35

相關問題