プロが教えるわが家の防犯対策術!

以下のコードでフォームへの前回入力値を保持しています。
送信前は"RESET"ボタンで入力値をクリアーできますが、送信後は入力値をクリアーできません。(RESETボタンをクリックしても送信済$_POSTが表示されます)おそらくブラウザのキャッシュで$_POSTの値が保持されているためと思われますが、何らかのボタンクリックでこれらの$_POST値をクリアする方法をご存知に方、是非ご教授ください。

<?php
$yyyy=$_POST[Y];
$mm=$_POST[M];
$dd=$_POST[D];
?>

<FORM action="<?=$_SERVER[PHP_SELF]; ?>" method="post" >
<P>YYYY<INPUT size="10" type="text" name="Y" value="<?= $yyyy;?>"></P>
<P>MM<INPUT size="10" type="text" name="M" value="<?= $mm;?>"></P>
<P>DD<INPUT size="10" type="text" name="D" value="<?= $dd;?>"></P>
<INPUT type="submit" name="submit" value="送信">
<INPUT type="reset" name="reset" value="reset">
</FORM>

A 回答 (2件)

「リセットをサブミットする」って言ったら変なのかな?



<?php
$post = $_POST;

if ( 'reset' != $post[ 'reset' ] )
{
$year = $post[ 'year' ];
$month = $post[ 'month' ];
$day = $post[ 'day' ];
}
else
{
unset ( $post );
}

if ( isset ( $post ) )
{
$reset = 'submit';
}
else
{
$reset = 'reset';
}
?>
<form action="<?php echo ( $_SERVER[ 'PHP_SELF' ] ); ?>" method="post">
<p>
Y:<input size="10" type="text" name="year" value="<?php echo ( $year ); ?>" /><br />
M:<input size="10" type="text" name="month" value="<?php echo ( $month ); ?>" /><br />
D:<input size="10" type="text" name="day" value="<?php echo ( $day ); ?>"><br />

<input type="submit" name="submit" value="submit" />
<input type="<?php echo ( $reset ); ?>" name="reset" value="reset" />
</p>
</form>
    • good
    • 0
この回答へのお礼

なるほど!こんな方法があったのですね。
無事解決しました。
ありがとうございました。

お礼日時:2008/01/14 08:36

リセットとは別に値を空にすることではなく、


ロード時の状態に戻すことですから、PHPで初期値を引き継いで
いるのであれば、リセットボタンを押すと、初期値が表示されるのは
当たり前のこと。

場合によってはリセットをきかせたいのであれば、
javascriptで初期値を設定するというやり方も検討の余地があるかと。

<?php
$yyyy=$_POST[Y];
$mm=$_POST[M];
$dd=$_POST[D];

print <<<eof
<script>
window.onload=function(){
var f=document.getElementById("f1");
f.Y.value='{$yyyy}';
f.M.value='{$mm}';
f.D.value='{$dd}';
}
</script>
<FORM action="{$_SERVER["PHP_SELF"]}" method="post" id="f1">
<P>YYYY<INPUT size="10" type="text" name="Y" value=""></P>
<P>MM<INPUT size="10" type="text" name="M" value=""></P>
<P>DD<INPUT size="10" type="text" name="D" value=""></P>
<INPUT type="submit" name="submit" value="送信">
<INPUT type="reset" name="reset" value="reset">
</FORM>
eof;

?>
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています