[PHP-users 6242] Re: リストボックスの動的変更の方法

Arai Junya php-users@php.gr.jp
Sat, 16 Mar 2002 17:45:04 +0900


はじめまして、じゅんやです。
解決策ではありませんが・・・

> プルダウンで選ばれた項目に合わせて
> リストボックスの項目を動的に変更しようとしています。
> リストボックスの選択内容をPHPに渡すため
> 『name』に【someone[]】のように『[]』が付加されています。

リストボックスの内容を動的に変更することはできているんですよね?
ソースを読むと2番目のセレクトを複数選択可能にして
その選択内容をPHPに渡すために配列としようとしているのではないでしょうか?
間違っていたらごめんなさい。

勝手に解釈して書きますが、
変数名に[]があるとJavaScritptがエラーになります。
エラーを起こさないためには、
two[] ではなく、twoでなければなりません。

そして複数選択時のデータの渡され方ですが、

--メニュー内容切り替え後だと思ってください。
TWO:
<SELECT name=two size=4 multiple>
<OPTION value=1>項目1</OPTION>
<OPTION value=2>項目2</OPTION>
<OPTION value=3>項目3</OPTION>
<OPTION value=4>項目4</OPTION>
</SELECT>
----
たとえば、1と2が選択されて送信された場合、
同じ変数名に入って渡されてくるので、結果的にPHPで$twoの内容をみると
2しか入っていないように見えます。
<form method="get">にしてアドレスのところを
確認すると、two=1&two=2のように渡されていました。


で、このデータを取得するために私がとった手段ですが、
methodはgetにします。
そして、PHPで環境変数のQUERY_STRINGを取得します。
$data = getenv("QUERY_STRING");
$tmp = explode("&",$data);

ここで、
$tmp[0]にはtwo=1
$tmp[1]にはtwo=2
が格納されています。
再度、explodeを使います。
$value = explode("=",$tmp[0]);

そうすると、
$value[0]にはtwo
$value[1]には1
が格納されます。
このようにして複数データを取得することができると思います。

考えるきっかけになれば幸いです。
もっと効率のよい方法があればぜひ教えてください。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
荒井潤弥
junya@ginzado.ne.jp