1

SOLVED, THANK YOU <3

I have a problem, when I try to populate a second dropdownlist with data from database from column selected in previous dropdownlist, like:

ddl:DDL1 ddl:DDL2 button:Search

When You choose in DDL1 e.g. ID, DDL2 should let You pick one of the existing ID's from database.

This is my HTML Form:

<form id="detailed_search_form">

        <select id="select_columns" name="select_columns" onchange="take_value()">
        </select>

        <select id="select_value" name="select_value">
        </select>

        <button id="button_search" value="search" onclick="search()">Search</button>

</form>
<div id="fill_me"></div>

This fills DDL1, and THIS WORKS:

    function take_columns(){
var tab = new Array();
$.ajax({
    dataType:       "json",
    url:            "take_columns.php",
    data:   {  },
    success:    function(data) {
        for (var i=0;i<data.length;i++){
            tab[i]=data[i]["Column_name"];
        }
        var $el = $("#select_columns");
        $el.empty(); // remove old options
        for (var i=0;i<tab.length;i++){
            $el.append($("<option></option>").attr("value", tab[i]).text(tab[i]));
        }
    }
  });
};

This SHOULD fill DDL2 and THIS DOESN'T WORK:

function take_value() {
var e = document.getElementById("select_columns");
var requestedColumn = e.options[e.selectedIndex].value;
$.ajax({
    data: { column: requestedColumn },
    url: 'take_value.php',
    dataType: 'json',
    success: function(json) {
        for (var i = 0;i<data.length;i++){
            tab[i]=data[i][requestedColumn];
            alert(tab[i]);
        }
        var $el = $("#select_value");
        $el.empty(); // remove old options
        for (var i=0;i<tab.length;i++){
            $el.append($("<option></option>").attr("value",  tab[i]).text(tab[i]));
        }
    }
  });
};

This is take_value.php:

$pdo = new PDO($dsn, $username, $password);
if(isset($_GET['column'])) {
    $whatColumn = $_GET['column'];
    $stmt = $pdo->prepare("SELECT $whatColumn FROM kandydaci");
    $stmt->bindParam(':column', $whatColumn, PDO::PARAM_STR);
    $stmt->execute();
    $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
}
echo json_encode($rows);
Zaaf
  • 11
  • 3

0 Answers0