0

別のselectのオプションに基づいてselectのオプションを変更する際に問題が発生しました。以下は、機能するコードです。

dropdown2.innerHTML = "<?php echo($SQLFormElements->GetColumnAsOptions('SELECT `field2` FROM `table2` WHERE `field1` = \'8\' ')); ?>";

説明:

2つのデータベーステーブルがあります:table1table2table1がありfield1ます。table2フィールドfield2field1SQLFormElementsは、mysqlクエリ(この場合はselect要素のオプション)に基づいてhtml要素をエコーアウトするphpファイルです。dropdown1値が含まれていfield1ます。の値に基づいて値をdropdown2表示する必要があります。つまり、の選択された項目です。field2field1dropdown1

とにかく、上記のコードは正常に機能しますが、値を取得するのではなくハードコーディングしました。これは、次のようなことを行う場合です。

var selectedItem = document.getElementById("ddField1");
dropdown2.innerHTML = "<?php echo($SQLFormElements->GetColumnAsOptions('SELECT `field2` FROM `table2` WHERE `field1` = \'" + selectedItem + "\' ')); ?>";

それは機能しません、なぜか考えてください!?私はちょっと困惑しています。念のため、最初のコードスニペットは機能します。

私は次のことを試しました:

  • 変数を整数として解析します(私のテーブルのfield1は整数型です)
  • where句で引用符を省略します
  • 引用符は省略しますが、where句の値をハードコーディングします
4

2 に答える 2

1

selectedItem の値を見逃していたと思います。

var selectedItem = document.getElementById("ddField1");に変更しますvar selectedItem = document.getElementById("ddField1").value;

于 2013-02-25T14:03:59.770 に答える
0

したがって、@ Bergi が提案した AJAX メソッドはそのトリックを行いました。

ここにあります:

dropdown1 の onchange イベント:

onchange="AJAXItemChangeEvent(this.value)"

...

JavaScript 関数

function AJAXItemChangeEvent(selectedValue)
{
    xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange = function(){
    document.getElementById("dropdown2").innerHTML = xmlhttp.responseText;
    };

    xmlhttp.open("GET","Getter.php?field1=" + selectedValue,true);
    xmlhttp.send();
}

...

Getter.php

<?php
  mysql_connect("dbhost","username","password");
  mysql_select_db("dbname");

  $field1 = $_GET["field1"];
  $sql = "SELECT field2 FROM table2 WHERE field1 = '".$field1."'";

  $result = mysql_query($sql);
  echo "<option></option>";

  while($row = mysql_fetch_array($result))
  {
      echo "<option>".$row[0]."</option>";      
  }         
?>

- 私の ajax コードは、古いブラウザー \ 後方機能に対応していません

于 2013-02-25T23:23:36.727 に答える