ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Let's PHPコミュの【質問】フォームからの入力結果を別窓で表示したいが...

  • mixiチェック
  • このエントリーをはてなブックマークに追加
PHPの話題ではないので申し訳ないのですが、
ちょっと質問させてください。

フォームからの入力データをPHPで処理して表示させるもので、
あいだに確認ページを表示するようにしています。
入力データを$_SESSION['form_data']に配列で格納して持ち歩いています。
確認ページには「書き込み」と「修正」というボタンをつくり、
「修正」ボタンが押された場合、フォームページに戻り、
$_SESSION['form_data']のデータをそれぞれのフォームに
再度読み込ませています。

さて、最終的な書き込み結果を別窓で表示させたいと思ったのですが、
そこで躓いてしまいました。

確認ページのformにtarget="_blank"を指定すると、
  入力→確認→書き込み
という流れの場合は問題ないのですが、
  入力→確認→修正
となった場合も別窓が開いてしまい、何度も修正を繰り返すと
そのたびに別窓が開いてしまいます。
またそのたびに$_SESSION['form_data']の内容も書き換えているため、
たとえば少し前の確認ページから「書き込み」ボタンを押しても、
一番最後の確認ページの内容が書き込まれてしまい、ユーザを混乱させてしまいそうです。

確認ページじたいを別窓で開くことも考えましたが、
やはり修正を繰り返すとフォームのページがたくさん表示されてしまい、
よろしくないような気がします。

元のウインドウにフォームページや確認ページが残ってしまうのも拙い気がします。

JavaScriptなどを使って新しいウインドウを開くことも考えましたが、
その新しいウインドウにheader("Location:.....")でリダイレクトさせる
方法がよくわかりません。

それとももっとスマートな方法が何かあるのでしょうか。
こういう場合、皆さんはどうやって解決していますか?

ご意見、アドバイスいただけるとありがたいです。
またもっと適切なコミュがありましたら、お教えいただければ幸いです。
よろしくお願いします。

コメント(5)

<form>を修正と書き込みで別々に付けるとか…ダメですか?(^^;
親ウィンドウは適当な画面に遷移して、その時にJavaScriptで新しいウィンドウを開くようなコードを出力すればいいのではないでしょうか?
その時にセッションIDを渡してしまえばデータの共有もできますし。
それぞれのウィンドウに決まった名前を付けてしまうのが早いのではないでしょうか?

元ウィンドウ:フレームをかぶせて "nyuuryoku" 等の名前に。
確認ウィンドウ: target="kakunin" 等で開く。修正ボタンは target="nyuuryoku" に。

とすれば2つのウィンドウ間で行き来できると思うのですが…
#ものぐさなので手元で実践してみないで書いてます。すみません。


ただ、アクセシビリティを考えるなら単一ウィンドウで処理するのがベターだと思います。
みなさん、ありがとうございます。
目からウロコというか、自分の融通のなさを痛感しました。

>しまりす@独立準備さん
もうかなり複雑なスクリプトになっていたので、これ以上formを増やしたくないと思っていましたが、formへ戻るボタンだけのformをつくればいいんですね。
ありがとうございます。

>carterさん、あいさん
JavaScriptはよくわからないのですが、新たにopenしたウインドウに内容を表示させる方法がわかれば、やはりそれがスマートですね。もうちょっと調べてみます。
ありがとうございます。

>geshoさん
target="_blank"ばかりを考えていましたが、もともとtargetはそのためのものでしたね。目ウロコでした。
ありがとうございます。

>ただ、アクセシビリティを考えるなら単一ウィンドウで処理するのが
>ベターだと思います。

ですよねぇ。そのへんも含めて、もう一度考え直してみます。

画面遷移のことなど、いろいろ参考になりました。
本当に皆さんありがとうございました。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Let's PHP 更新情報

Let's PHPのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。