0

最初のドロップダウンでの選択によって、後続の 6 つのドロップダウンで使用できるオプションが決まるインターフェイスを作成しています。

各ドロップダウンは、次のようにテーブルから値と表示名を取得します。

        $arr = array();
        $rs = mysql_query("SELECT * FROM sn_roles");
        while($obj = mysql_fetch_object($rs)) {
            $arr[] = $obj;
        }
        $response = '{"roles":'.json_encode($arr).'}';
        echo $response;

そしてjsonをエンコードします。

私がしたいのは、複数のテーブルから ID と名前を選択し、テーブルごとに json オブジェクト コレクションを取得することです。

4

2 に答える 2

1

各ドロップダウンオプションにajaxを使用し、特定のテーブルの返されたjsonオブジェクトをjavascriptオブジェクトに保存する必要があります

     <select name="selector1" id="selector1" onChange="getoptions();" 
            <option value="1">--Select--</option>
            <option value="2">option1</option>
            <option value="3">option2</option>
            <option value="4">option3</option>
   </select>
   <select name="selector2" id="selector2">
    </select>
    <select name="selector3" id="selector3">
    </select>

ドロップダウンのJavaScriptコードは次のようになります

function getoptions(){

$('#selector2').html('<option value="">--Select--</option>');
$('#selector3').html('<option value="">--Select--</option>');
var selector1 = $('#selector1').val();
jQuery.get('getdropAjax.php', {'_action_':'GetDropValue', Selector1val : selector1 }, function(r) {
    for (var i in r.forselector2)
    {
        $('#selector2').append('<option value="'+i+'">'+r.forselector2[i]+'</option>');
    }
    for (var i in r.forselector3)
    {
        $('#selector3').append('<option value="'+i+'">'+r.forselector3[i]+'</option>');
    }
}, 'json');
}

そして、これのためのあなたのphpコードは次のようになります

<?php
$data = array();
switch ( $_GET['_action_'] ){
case 'GetDropValue':
$arr1 = array();
    $rs = mysql_query("SELECT `colname` FROM sn_roles");
    while($obj = mysql_fetch_object($rs)) {
        $arr1[] = $obj->colname;
    }
$data['forselector2'] = $arr1;
$arr2 = array();
    $rs = mysql_query("SELECT `colname` FROM table2");
    while($obj = mysql_fetch_object($rs)) {
        $arr2[] = $obj->colname;
    }
$data['forselector2'] = $arr2;
return json_encode($data);
?>
于 2013-03-23T10:38:50.440 に答える
0

次のように考えてみてはどうでしょうか。

function getSnDataJSON($table_name){

       $arr = array();
        $rs = mysql_query("SELECT id, name FROM sn_" . $table_name);
        while($obj = mysql_fetch_object($rs)) {
            $arr[] = $obj;
        }
        $response = '{"'.$table_name.'":'.json_encode($arr).'}';
        return $response;

}

echo getSnDataJSON('roles');

データベースからのフェッチを関数にカプセル化します。これをそのまま機能させるには、テーブル名とフォーム要素名を設定する必要があります。

つまり、データベースの sn_roles はフォームのロールになり、データベースのロールはフォームのロールのままになります

それはそれについての1つの考え方です。私が確信していない唯一のビットは、最初のjsonの戻り値の引用です。

enter code here$response = '{"'.$table_name.'":'.json_encode($arr).'}';

于 2013-03-23T10:36:15.503 に答える