2016-06-02 14 views
1

Ich habe eine Auswahlliste, die dynamisch mit Daten aus meiner Datenbank gefüllt ist. Aber ich möchte nicht, dass die Benutzer die echten Spaltennamen sehen, also habe ich in meiner Datenbank eine zusätzliche Spalte namens column_alias erstellt. Was ich will, ist, die column_alias-Namen in der Dropdown-Liste anzuzeigen, aber die tatsächlichen Werte der Spaltennamen beizubehalten.Wie ändere ich den Namen, aber nicht den Wert einer dynamisch gefüllten Auswahlliste?

Dies ist, wie ich im Moment die Auswahlliste mit den realen Spaltennamen Füllung:

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(); 
    }); 

} 

Und das ist der Code, der die Daten outof meine Datenbank erhalten ist:

<?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"; 
?> 

aktualisieren

Dies ist, was meine Datenbank-Tabelle wie folgt aussieht: enter image description here

Also ich möchte die Tabelle Alias ​​in meiner Auswahlliste sichtbar sein, aber ich möchte den Wert Tabellenname, so dass es mit meiner Datenbank interagieren kann.

+0

Ändern des ''

+0

Aber als behält es den Wert und ändert nur den Namen? –

+3

Bitte klären Sie Ihr spezifisches Problem oder fügen Sie weitere Details hinzu, um genau das hervorzuheben, was Sie brauchen. Wie es derzeit geschrieben wird, ist es schwer zu sagen, was genau Sie fragen. –

Antwort

2

Zunächst müssen Sie die Alias ​​als auch von der database.Change Ihre Server-Seite Code holen zu folgende.

<?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"; 
?> 

dann in der Client-Seite Code einfach geben die table_alias als Option Name und table_name als Optionswert.

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

Super, das hat funktioniert! Danke vielmals! Ich werde deine Antwort als die richtige markieren. –

+0

Entschuldigung! Es ist nicht klar, was Sie fragen. Ich denke, es ist ein Problem, nicht korrekt auf das Objekt zuzugreifen. Sie müssen den Attributnamen angeben. Sehen Sie sich https: //developer.mozilla an.org/de-DE/docs/Web/JavaScript/Guide/Working_with_Objects – John

+0

Egal, ich habe es behoben. Aber danke für die Antwort, ich werde den anderen Kommentar löschen. –

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

Danke für die jfiddle. Ich verstehe, was du tust. Aber ich muss die Lösung in meinem Skript implementieren, und ich weiß nicht, ob das möglich ist, weil es ein dynamischer Ansatz ist und kein statischer wie der Ihrige? –

0

Änderung holen Daten von 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"; 
?> 

Dann ändern in JavaScript-Code:

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