2013-03-23 23 views
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對象集合。

回答

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); 
?> 
+0

謝謝,這解決了我的問題:) – Stjerneklar

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在你的數據庫變得角色在你的形式在你的數據庫 或 角色停留在你的形式角色

那是一個思考它的方式,唯一的一點我不確定是現狀初始json返回的結果。

enter code here $ response ='{「'。$ table_name。'」:'。json_encode($ arr)。'}';

相關問題