同一ページへのPOSTリクエスト送信でフォーム内のデータを保持する。

 別ページにPOST送信して、戻った時にフォーム内のデータが消えちゃうと再び入力しなければいけなくなる。そういうときはCookieを使って、フォームのデータを保持しておくのが一般的だけど、じゃあ同一ページへのPOST送信のとき、送信しちゃったら通常消えちゃうフォーム内のデータはどうやって保持するのか。経験的にCookieでやればいいんじゃない?って思ったんだけど、ついさっき良い方法見つけた。

[php]
<form name="form" action="<?= $_SERVER["REQUEST_URI"] ?>" method="post">

<input type="radio" name="form1" value="男" <?php if ( $_POST[form1] == "男" ) echo ‘checked’; ?>>男
<input type="radio" name="form1" value="女" <?php if ( $_POST[form1] == "女" ) echo ‘checked’; ?>>女

<select name="form2">
<option value="社会人" <?php if ( $_POST[form2] == "社会人" ) echo ‘selected’; ?>>社会人</option>
<option value="学生" <?php if ( $_POST[form2] == "学生" ) echo ‘selected’; ?>>学生</option>
</select>

<input type="submit" value="送信する">
[/php]

 タグの中に無理やりphpを埋め込んで、$_POST関数の中を判定して、真のとき「checked」「selected」をechoする。クッキー使うより”私は”めんどくないと思う。

 こんなもんでもちゃんと動くし使う分には問題ないんだけどね。ただひとつだけ、コードが超汚ねえ・・・。力技っていうか、純粋に美しくないよね。

コメントを残す

メールアドレスが公開されることはありません。