使用javascript数组从PHP / MySQL填充选择菜单

时间:2013-03-21 00:16:04

标签: php javascript mysql

我有这段代码:

<script>
var values = <?php
$sql="SELECT * FROM billing_sagenominalcodes order by code ASC";
$rs=mysql_query($sql,$conn) or die(mysql_error());
$nominalcodes = array();
while($result=mysql_fetch_assoc($rs))
{
    $nominalcodes[] = $result['code'];
}
echo json_encode($nominalcodes);
?>;
</script>

<select name="sagenominalcode" id="sagenominalcode">
<script>addOptions(document.getElementById('sagenominalcode'), values);</script>
</select>

它完全符合我的需要,但我想知道是否可以在选择选项和代码中显示数据库中的列名“name”?

例如

而不仅仅是

123

让它像这样

123 - 姓名

1 个答案:

答案 0 :(得分:0)

你想要严格区分你的php和你的js。编写代码的方式将按原样运行,但非常易碎,并且可能会发生灾难性的破坏,导致action-at-a-distance样式错误。

例如,如果您的数据库架构被重构以删除code列,那么您的javascript将被破坏,原因是没人会怀疑。


也就是说,如果您还希望在选择选项的name列中显示数据,您也必须将该数据传递到$nominalcodes。现在,它包含一个索引的数据数组(可能是intstring),但您需要更改它,以便它包含一个索引的数组数组。

所以,之前:

$nominalcodes = array(1,3,5,78,3,2,234);

之后:

$nominalcodes = array(
    array(1, 'foobar'),
    array(3, 'larry'),
    array(5, 'bob'),
    ...
);

此时,您必须重构您的javascript addOptions函数,以便它可以正确解析数组数组,而不是单个数组的数组。