0

私はこのコードを持っています:

<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>

それは私が必要とする方法とまったく同じように機能しますが、選択オプションとコードでデータベースから列名「名前」を表示できるかどうか疑問に思っていますか?

例えば、ただではなく

123

このようにする

123 - 名前

4

1 に答える 1

0

php と js を厳密に分離する必要があります。コードの書き方はそのままでも機能しますが、非常に脆く、破壊的に壊れて、アクション アット ア ディスタンススタイルのバグにつながる可能性があります。

たとえば、データベース スキーマがリファクタリングされて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'),
    ...
);

この時点で、addOptions単一の値の配列ではなく、配列の配列を適切に解析できるように、JavaScript 関数をリファクタリングする必要があります。

于 2013-03-21T00:27:27.340 に答える