[PHP-users 18719]Re: Javascriptを利用してのformの値の変更

鶴岡 直也 tsuruokan @ gifu.cbm.co.jp
2003年 10月 31日 (金) 13:41:35 JST


はじめまして。
初めて投稿するので不備があるかもしれませんが・・・

Aという項目とそれにぶらさがるBという項目があり
Aの項目名が並んでいるセレクトボックスを選択すると
AにぶらさがるBの項目が別のセレクトボックスに表示される。

ということを実現したいと仮定。
画面遷移なしで実現する場合はAとそれにぶらさがるB全部を抜き出して
置く必要がある。Aを選択してBを表示させるにはJavaScriptで実現。

テーブルの構成がイマイチわからなかったので勝手に定義。
以下のようなデータがあると仮定して話を進めます。

 テーブル名:フィールド名
 table1:code,name
 table2:code,table1_code,name

*table1のcodeとtable2のtable1_codeが関連ね。

で、以下コード。

switch (SelVal) {
<?php
$sql = "select code,name from table1 order by code";
$result_a = execSQL($sql);//SQL実行ね

while($data_a = mysql_fetch_array($result_a)){
  print("case ".$data_a[code].":\n");

  sql_query = "SELECT code,name FROM table2 WHERE table1_code=".$data_a[code];
  $result_b = execSQL(sql_query);
  $i = 0;
  while($data_b = mysql_fetch_array($result_b)){
    print('document.fm1.selform2.options['.$i.']=new Option("'.$data_b[code].'","'.$data_b[name].'")'."\n");
    $i++;
  }
  print('document.fm1.selform2.length='.$i.';'."\n");
  print("break;");

}
?>
// -->
<script>
</head>
<body>

ってな感じで1段目のwhileでcaseを作る。(A(table1)のコードですね)
2段目でBのセレクトボックスに入れるnameとvalueを作成。とやったらどうでしょうか?


PHP-users メーリングリストの案内