2016-06-02 8 views
1

私はデータベースからのデータで動的に埋め込まれた選択リストを持っています。しかし、ユーザーに実際の列名を見せたくないので、column_aliasというデータベースに余分な列を作成しました。私が欲しいのは、column_aliasの名前をドロップダウンに表示することですが、カラム名の実際の値を保持することです。名前を変更する方法はありますが、動的に選択された選択リストの値は変更しないでください。

これは私が、現時点では、実際の列名と選択リストを埋めてる方法です:

function loadTables() { 
     $.getJSON("dropdown_code/get_tables.php", success = function(data) 
     { 
      console.log('inside callback'); 
      var optionsTables = ""; 
      for(var i = 0; i < data.length; i++) 
       { 
        optionsTables += "<option value='" + data[i] + "'>" + data[i] + "</option>"; 
       } 

     $("#slctTable").append(optionsTables); 
     $("#slctTable").change(); 
    }); 

} 

そして、これが手が私のデータベースoutofデータのコードです:

<?PHP 

    require "opendb.php"; 

    $query = "select table_name 
       from db_tables 
       order by table_name"; 

    $data = pg_query($conn, $query); 

    $table_names = array(); 

    while ($row = pg_fetch_array($data)) 
    { 
     array_push($table_names, $row["table_name"]); 
    } 

    echo json_encode($table_names); 

    require "closedb.php"; 
?> 

更新

これは私のデータベーステーブルには次のようになります。 enter image description here

私はselectリストにtable_aliasを表示したいが、値をtable_nameにしてデータベースとやり取りできるようにしたい。

+0

は '$(使用して行うことができます... ).attr( 'value') ' – Peter

+0

しかし、それは値を保持し、名前を変更するだけですか? –

+3

具体的な問題を明確にしたり、詳細を追加して必要なものを正確に強調してください。現在書かれているとおり、あなたが求めていることを正確に伝えるのは難しいです。 –

答えて

2

まずあなたがするdatabase.Changeからだけでなく、サーバー側のコードをエイリアスを取得する必要があります。以下。

<?PHP 

require "opendb.php"; 

$query = "select table_name,table_alias 
      from db_tables 
      order by table_name"; 

$data = pg_query($conn, $query); 
$table_names = array(); 

while ($row = pg_fetch_array($data)) 
{ 
    array_push($table_names, $row); 
} 
echo json_encode($table_names); 
require "closedb.php"; 
?> 

クライアント側のコードでは、単にオプション名としてtable_aliasを、オプション値としてtable_nameを出力します。

function loadTables() { 
    $.getJSON("dropdown_code/get_tables.php", success = function(data) 
    { 
     console.log('inside callback'); 
     var optionsTables = ""; 
     for(var i = 0; i < data.length; i++) 
      { 
       optionsTables += "<option value='" + data[i]['table_name'] + "'>" + data[i]['table_alias'] + "</option>"; 
      } 

    $("#slctTable").append(optionsTables); 
    $("#slctTable").change(); 
}); 
} 
+0

素晴らしいです!どうもありがとう!あなたの答えを正しいものとしてマークします。 –

+0

申し訳ありません!あなたが何を求めているのかははっきりしていません。私はそれがオブジェクトに正しくアクセスしないという問題だと思う。属性名を指定する必要があります。このhttps://developer.mozillaを見てください。org/ja-ja/docs/Web/JavaScript/Guide/Working_with_Objects – John

+0

決して気にしないでください。しかし、応答のおかげで、私は他のコメントを削除します。 –

0

HTML

<select id="xoxo_select"> 
    <option value="foo_value">foo</option> 
    <option value="xoxo_value">xoxo</option> 
</select> 

JS

$('#xoxo_select option[value="xoxo_value"]').text('bar'); // change name of option 
$('#xoxo_select option[value="xoxo_value"]').attr('value', 'bar_value'); // change value of option 

jsfiddle https://jsfiddle.net/tg126u7g/

+0

jsfiddleありがとう。私はあなたがやっていることを否定します。しかし、私はスクリプトでこのソリューションを実装する必要があり、動的アプローチであり、あなたのような静的なアプローチではないので、可能かどうかわかりません。 –

0

DBからデータを取り出すの変更:次に

<?PHP 

require "opendb.php"; 

$query = "select table_name,table_alis 
      from db_tables 
      order by table_name"; 

$data = pg_query($conn, $query); 

$table_names = array(); 
$i=0; 
while ($row = pg_fetch_array($data)) 
{ 

    array_push($table_names[$i], $row["table_name"]); 
    $i++; 
} 

echo json_encode($table_names); 

    require "closedb.php"; 
?> 

javascriptのコードの変更: ``値attribueを変更

optionsTables += "<option value='" + data[i][0] + "'>" + data[i][1] + "</option>"; 
関連する問題