[PHP-users 13668] フォームの値の渡し方について

H.Watanabe php-users@php.gr.jp
Mon, 03 Mar 2003 17:43:09 +0900


いつもお世話になります。渡部@未熟者です。

複数の選択リストのうち、どのリストが変更されたかに応じて、ページの再生成
をするため、下記サンプルで実験中です。が、このままでは
OnChangeでページを再表示したときは、フォームの内容がリセットされます。
実際には、数十個のフォームオブジェクトがあるので、
./sample.php?mode=xx&select1=xx&select2=xx&textfield=xx
という渡し方は非現実的だと思います。

サンプルのように、JavaScriptを使用した場合、どのようにすれば良いか、
また、phpで実現するにはどのようにすればよいのか、アドバイス願います。

※サンプルでは、元の値を表示するコードは省略しています。

----- sample.php -----
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP">
<title>無題ドキュメント</title>
<script language=JavaScript>
<!--
function myfunc(value)
{
	var	Url = './sample.php?mode=' + value;
	alert(Url);
	location.href = Url;
}
//-->
</script>
</head>

<body>
<?php
//echo "mode=". $mode;
switch($mode) {
case "send":
	//送信処理
	echo $select1. $select2. $textfield. " : 送信されました。<br>";
	break;
case "first":
	//一つ目のリストが変更された時の処理
	echo $select1. $select2. $textfield. " : 一つ目のリスト変更。<br>";
	break;
case "second":
	//二つ目のリストが変更された時の処理
	echo $select1. $select2. $textfield. " : 二つ目のリスト変更。<br>";
	break;	
}
?>
<form name="form1" method="post" action="./sample.php?mode=send">
  <select name="select1" size="1" onChange="myfunc('first')">
    <option value="A">A</option>
    <option value="B">B</option>
    <option value="C">C</option>
  </select>
  <select name="select2" size="1" onChange="myfunc('second')">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
  </select>
  <input type="text" name="textfield" value="テキスト入力">
  <br>
  <input type="submit" name="Submit" value="送信">
</form>
</body>
</html>