プロが教える店舗&オフィスのセキュリティ対策術

フォームを送信してそのフォームで選択した内容を
フォームの下の部分に表示するようなプログラムを作りたいのですが
送信するとフォームの選択内容が戻ってしまいます。
選択を保持して表示するにはどうしたらよいですか?
路線情報の検索みたいな感じにしたいということです。

****self.php****
<html>
<head></head>
<body>

<form action='self.php' method=get>
<select name='num' id='num'>
<option name='5' value='5'>5</option>
<option name='7' value='7'>7</option>

</select>
<br><input type=submit value='送信'>
<form>

<script language="javascript">
document.open();
document.write(<?php print $_GET["num"]; ?>);
document.close();

</script>

</body>
</html>

A 回答 (2件)

たとえばこんな風に処理します



<?PHP
$select["num"]=array();
$option["num"]=array("nodata","5","7");
$request["num"]=(isset($_REQUEST["num"]) and in_array($_REQUEST["num"],$option["num"]))?$_REQUEST["num"]:"nodata";
foreach($option["num"] as $val){
$select["num"][$val]=($request["num"]===$val)?" selected=\"selected\"":"";
}
//print_r($select); //チェック用
?>
<html>
<head></head>
<body>
<form>
<p>
<select name='num'>
<option value=''<?PHP print $select["num"]["nodata"];?>>選択する</option>
<option value='5'<?PHP print $select["num"]["5"];?>>5</option>
<option value='7'<?PHP print $select["num"]["7"];?>>7</option>
</select>
<input type=submit value='送信'>
</p>
<form>
</body>
</html>
    • good
    • 0
この回答へのお礼

ありがとうございました。
例で示してくれてわかりやすかったです。
勉強してみます。

お礼日時:2013/10/30 01:26

form内容の保持はサーバサイド(PHP)で処理すべきです。


PHPなら $_GET でform内容を受け取れるはずなので <option selected> で選択させて下さい。

document.write(<?php print $_GET["num"]; ?>);

この部分もPHPで出力すれば済むはずでJavaScriptで出力する必要はないように思えます。
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます。
>>document.write(<?php print $_GET["num"]; ?>);
よく考えたらわずらわしい事やっちゃってましたね
初めフォームの状態をJavaScriptで抽出して書きだそうとしてたので
そこにphpの要素を取り入れたら変な書き方になってしまいました。
問題の箇所以外の部分にも不安があったので、ありがとうございます。

選択させる部分が具体的にいまいちわからなかったのですが
<option name='5' value='5'
<?php print ($_GET['num']==5) ? "selected" : ""; ?>
>5</option) >

<option name='7' value='7'
<?php print ($_GET['num']==7) ? "selected" : ""; ?>
>7</option>

このような書き方で問題ないですか?

お礼日時:2013/10/27 19:47

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