2012-02-15 11 views
0

1つのPHPページから別のPHPページに変数を渡そうとしていますが、Excelのダウンロードをトリガします。しかし、私はどのように変数を渡し、まだダウンロードトリガーを持っているのか分かりません。私は、Excelファイルを作成する私のPHPページには変数が渡されないこと、またはダウンロードがトリガーされないことを理解しています。MySqlクエリにPHP変数を渡して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; 
?> 

Unfortun ately、$ _GET [date ']変数は、excel.phpをダウンロードしないようにします。私はexcel.phpページ内に静的なMySqlクエリを書くことで逃げることができたので、変数を渡す必要はありません。しかし、私は動的なエクセルダウンロードを作成する必要がありますが、私は自分の選択肢を理解するのにPHPで十分ではありません。副次的に、私はAjaxを使用し、 "submit"を利用しません。これは問題でしょうか?

+0

_ Excelファイルを作成する私のPHPページには、変数が渡されない、またはダウンロードがトリガーされないことを理解しています。また、何かエラーがありますか? –

+0

私は何のエラーも表示されず、代わりに新しいウィンドウが表示されます。これは、onclickイベントをトリガーした後、ダウンロードプロンプトは実行されません。私はどこかで、Excelのヘッダーを持つPHPページに、ダウンロードがトリガーするためのデータが入っていないと読んでいます。 MySQLのクエリに '2012-02-15'と書きましたが、変数を渡すのではなく、ダウンロードプロンプトが表示されます。 – user175328

+0

質問を繰り返すには:MySqlクエリを実行する変数を渡し、MySqlクエリ結果を含むExcelファイルのダウンロードをトリガするにはどうすればよいですか?私の問題はPHPヘッダーの前に何も出力できないという事実です。 – user175328

答えて

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からの応答を使用しているようではありません... –

関連する問題