0

MySQLデータベースから選択メニューに入力するこのPHPコードがあります...

<select name="input" id="input">
<?php
$sql="SELECT * from table ";
$rs=mysql_query($sql,$conn) or die(mysql_error());
while($result=mysql_fetch_array($rs))
{
    echo '<option value="'.$result["db_field"].'">'.$result["db_field"].'</option>';
}
?>
</select>

これは完全に正常に機能しますが、どういうわけかそれをjavascript関数に入れる必要があります。

ボタンをクリックするとテキストボックスと別の選択メニューが追加されるjavascriptコードがありますが、新しい(追加された)選択メニューにデータベースのデータが入力されません

4

2 に答える 2

0

値の文字列を配列に変換することから始めます。これにより、次のようになります。

var values = ['value0','value1','value2'];

次に、それらをオプションに変換して、次のような選択要素に追加できます。

function addOptions(select, values) {
  for (var i=0, iLen=values.length; i<iLen; i++) {
    select.appendChild(new Option(values[i],values[i]));
  }
}

そしてそれを次のように呼びます:

addOptions(document.getElementById('input'), values);

選択がページに追加された後。

ちなみに、フォームコントロールにIDと名前の両方を追加する必要はありません。提出する名前が必要です。IDは不要です。フォームへの参照を取得した場合、フォームの名前付きプロパティとしてコントロールにアクセスできるため、次を使用してselectを参照できます。

document.forms[0]['input'];

また

document.forms[0].input;

等々。「入力」はコントロール名の適切な選択ではないことに注意してください。

于 2013-03-20T23:42:11.743 に答える
0

おそらく、json_encode を使用してオプションを JSON に変換できます (私は PHP プログラマーではなく、それを使用する正確なセマンティクスを知りません)。

PHP では次のようにします。

echo '<script>var optionsJSON = '.json_encode(mysql_fetch_array($rs)).'</script>'

javascriptnで次のようにします(私はjqueryを使用しています):

var select = $('select.classOfThisSelect');
var options = JSON.parse(optionsJSON);
for(var i = 0; i < options.length; i++)
  $('option').attr({value: options[i]}).append(options[i]).appendTo(select);

optionsJSON は、グローバルに使用できる JSON 文字列になります Javascript 関数で自由に使用できます

注: json_encode を引用符で囲む必要がある場合があります

于 2013-03-20T23:32:41.560 に答える