人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPダウンロードダイアログ後の処理について

ページAにコンボボックス(テーブルからデータ取得)を配置し、
同ページの「ダウンロード」ボタンで、エクセル出力(既に用意されたテンプレートExcelに値をセットするだけ)を行うという処理を作っています。簡易化すると以下のような感じです。

ページA.php
//postされたとき
if($SERVER[REQUEST_METHOD]=="POST"){
//値受け取り
//エクセルファイルOPEN,値セット,名前を付けて保存,閉じる処理
//ダウンロードダイアログ表示
}
//html部
<form action="" method="post">
//値リストにDBより取得した値表示
</form>

一度ダウンロードダイアログでエクセルファイルを「保存」や「開く」後、
再度「ダウンロード」ボタンを押したり、リロードを行ったりした場合に
何も表示されなくなってしまいます。(必要なパラメータもhiddenで渡し、常に変数に保持するようにしています。)

みなさんはダウンロードダイアログ後の後始末をどのようにされていますか?


●質問者: EEFAE4
●カテゴリ:ウェブ制作
✍キーワード:dB Excel HTML open PHP
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● あすか
●35ポイント

ダウンロードダイアログというのはブラウザの機能であってPHPは関係ないように思います。


フォームの2重送信防止をCookieで行うサンプル」を参考に、二重ダウンロードしないようにしてはいかがでしょう。


2 ● taroe
●35ポイント ベストアンサー

PHPでダウンロードするファイルを送信する場合は

ダウンロードボタンを押されたら新しいウインドウを開いてダウンロードするように

してください。

http://d.hatena.ne.jp/litt/20070905/p1

◎質問者からの返答

ご回答ありがとうございます。

いろいろ試してまして、

「完了しました。5秒後にトップページへ移動します。」とベタ書きした

ページB(新しいページ)をPOST先として、ページBにダイアログ表示処理

「header('Content-・・・

readfile($filepath);」

を記述しても、ページAの「ダウンロード」ボタンでページBが表示されず、

ページAのままダイアログが表示されます。

ダウンロードファイルを「保存」なり「開く」なりした後、

ページAをアクティブにし、ブラウザの「戻る」ボタンなどを

押したタイミングでページBが表示されてしまいます。

確かにページBで一番始めに読み込まれるのは「header(・・・」の

部分で、html記述が読み込まれる前に

ダウンロードダイアログへハンドル(?)が渡るので

表示更新がされないのも何となくわかるのですが

ここをどのように解決していいのかがわかりません。

引き続きアドバイスをお願いします。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ