PHPの質問です。htmlフォームで入力された値をPOSTで内容確認ページの出力処理へ渡し、さらにそこから内容変更のため最初のhtmlフォームの出力処理へと戻る、という処理を書いています。

内容確認ページではhidden属性を指定したinput要素を配置し、【送信】【編集】ボタンの処理を振分ける別のページ(送信完了ページの出力処理)を経由して最初のhtmlフォームに戻ります。この際、最初のhtmlフォームに戻ると未記入だったcheckboxの値が、最初のhtmlフォームでvalueに指定したものに書換えられています(全て)。未チェックのcheckboxが戻ってくるとチェック済みに変わってしまってマズイのですが、原因が分かりません。何なんでしょう?

環境:PHP4.3.10,FreeBSD 4.10-RELEASE-p5 i386,Apache/1.3.33 (Unix)

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:allows No.1

回答回数86ベストアンサー獲得回数0

ポイント15pt

キャッシュの無効:Expiresヘッダ/Pragmaヘッダ

no-cashe


print ”Content-type: text/html”, ”¥n”;

print ”Pragma: no-cache”, ”¥n¥n”;

id:dak

上記コードではHTTPヘッダとして出力されないようでしたので(html出力よりも前に記述しましたが)、header(”Pragma: no-cashe”);としてみましたが、症状は改善しないようです。。

2005/04/15 11:34:59
id:ukp No.2

回答回数15ベストアンサー獲得回数0

ポイント40pt

http://www.hatena.ne.jp/1112895218

人力検索はてな - PHPの質問です。htmlフォームで入力された値をPOSTで内容確認ページの出力処理へ渡し、さらにそこから内容変更のため最初のhtmlフォームの出力処理へと戻る、という処理を..

動きを理解するのが難しいですが、考えられることを挙げます。


1.フォームの送信時にスクリプト(JavaScriptなど)で入力値を書き換えているということはないでしょうか。この場合は、画面を読み直したときに同じようにスクリプトで値を戻してやる必要があります。


2.チェックボックスにコントロール配列(nameに[]をつける)を使用していないでしょうか。送信時に配列で渡されるため、処理を誤るとすべてのチェックボックスに同じ値が入ってしまいます。


3.チェックボックスのチェック状態(checked)をプログラムで設定する際に誤った処理をしていないでしょうか。

id:dak

3がビンゴです。簡単なケアレスミスですね。

どうも有難うございました!

2005/04/15 11:35:10
id:ke_ishi No.3

回答回数269ベストアンサー獲得回数0

ポイント5pt

#urlはダミー

「htmlフォーム」と書いてるモノがただのhtmlであれば、内容を動的に変更することはできないので、それはふつうの動作です。

フォームをphpで生成し、チェックされたcheckboxのタグ内に「checked」と出力していくようにしてはどうでしょう。

id:dak

症状の説明が分かりづらかったので申し訳ないのですが、htmlフォームはPHPから出力しています。回答ありがとうございました!

2005/04/15 11:38:52

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません