2016-06-02 1 views
1

У меня есть список выбора, который динамически заполняется данными из моей базы данных. Но я не хочу, чтобы пользователи видели настоящие имена столбцов, поэтому я создал дополнительный столбец в моей базе данных 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"; 
?> 

Update

Это то, что моя таблица базы данных выглядит следующим образом: enter image description here

Поэтому я хочу, чтобы table_alias отображался в моем списке выбора, но я хочу, чтобы значение было табличным именем, чтобы оно могло взаимодействовать с моей базой данных.

+0

Изменение ''

+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 как имя параметра и имя_таблицы как значение параметра.

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/en-US/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

Изменение выборки данных из БД:

<?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-код:

optionsTables += "<option value='" + data[i][0] + "'>" + data[i][1] + "</option>"; 

 Смежные вопросы

  • Нет связанных вопросов^_^