内容確認ページではhidden属性を指定したinput要素を配置し、【送信】【編集】ボタンの処理を振分ける別のページ(送信完了ページの出力処理)を経由して最初のhtmlフォームに戻ります。この際、最初のhtmlフォームに戻ると未記入だったcheckboxの値が、最初のhtmlフォームでvalueに指定したものに書換えられています(全て)。未チェックのcheckboxが戻ってくるとチェック済みに変わってしまってマズイのですが、原因が分かりません。何なんでしょう?
環境:PHP4.3.10,FreeBSD 4.10-RELEASE-p5 i386,Apache/1.3.33 (Unix)
キャッシュの無効:Expiresヘッダ/Pragmaヘッダ
no-cashe
print ”Content-type: text/html”, ”¥n”;
print ”Pragma: no-cache”, ”¥n¥n”;
http://www.hatena.ne.jp/1112895218
人力検索はてな - PHPの質問です。htmlフォームで入力された値をPOSTで内容確認ページの出力処理へ渡し、さらにそこから内容変更のため最初のhtmlフォームの出力処理へと戻る、という処理を..
動きを理解するのが難しいですが、考えられることを挙げます。
1.フォームの送信時にスクリプト(JavaScriptなど)で入力値を書き換えているということはないでしょうか。この場合は、画面を読み直したときに同じようにスクリプトで値を戻してやる必要があります。
2.チェックボックスにコントロール配列(nameに[]をつける)を使用していないでしょうか。送信時に配列で渡されるため、処理を誤るとすべてのチェックボックスに同じ値が入ってしまいます。
3.チェックボックスのチェック状態(checked)をプログラムで設定する際に誤った処理をしていないでしょうか。
3がビンゴです。簡単なケアレスミスですね。
どうも有難うございました!
#urlはダミー
「htmlフォーム」と書いてるモノがただのhtmlであれば、内容を動的に変更することはできないので、それはふつうの動作です。
フォームをphpで生成し、チェックされたcheckboxのタグ内に「checked」と出力していくようにしてはどうでしょう。
症状の説明が分かりづらかったので申し訳ないのですが、htmlフォームはPHPから出力しています。回答ありがとうございました!
上記コードではHTTPヘッダとして出力されないようでしたので(html出力よりも前に記述しましたが)、header(”Pragma: no-cashe”);としてみましたが、症状は改善しないようです。。