我有这段代码:
<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 - 姓名
答案 0 :(得分:0)
你想要严格区分你的php和你的js。编写代码的方式将按原样运行,但非常易碎,并且可能会发生灾难性的破坏,导致action-at-a-distance样式错误。
例如,如果您的数据库架构被重构以删除code
列,那么您的javascript将被破坏,原因是没人会怀疑。
也就是说,如果您还希望在选择选项的name
列中显示数据,您也必须将该数据传递到$nominalcodes
。现在,它包含一个索引的数据数组(可能是int
或string
),但您需要更改它,以便它包含一个索引的数组数组。
所以,之前:
$nominalcodes = array(1,3,5,78,3,2,234);
之后:
$nominalcodes = array(
array(1, 'foobar'),
array(3, 'larry'),
array(5, 'bob'),
...
);
此时,您必须重构您的javascript addOptions
函数,以便它可以正确解析数组数组,而不是单个数组的数组。