Как изменить варианты выпадающего списка, основанные на другом выпадающем списке? Значения, полученные из базы данных

Я работаю над этим несколько дней и не могу найти окончательного решения. Я прошел через подобные вопросы SOF, но не знаю, почему я не могу это понять.

У меня есть три выпадающих списка. Все значения (параметры) извлекаются из таблицы с именем master.

First dropdown -> Loan type (values such as housing,personal,instant are in the table). Second dropdown -> Loan amount (different amounts have been defined for each type) Third dropdwon - > Interest Rate (same as second) 

Когда пользователь выбирает один вариант из первого раскрывающегося списка ТОЛЬКО, соответствующие параметры (не все) должны быть загружены во второй и третий выпадающие списки

Ниже приведен код, который я попытался сделать. Сначала я попытаюсь сделать это для первых двух выпадающих списков.

 <?php require_once "../includes/loan_master.php"; ?> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Basic</title> </head> <body> Loan Type <select id="first" name="loan_master_id" class="textInput"> <!--first dropdwon--> <?php $loans=$loan_master->find_by_sql("SELECT * FROM loan_master"); //this will return an array foreach ($loans as $loan) { echo "<option value='$loan->id'>$loan->loan_type</option> "; } ?> </select> Loan Amount<select id="update"> <!--second dropdown--> </select> <script src="../javascripts/jquery-1.11.0.js"></script> <script> $(function() { $("#first").change(function() { var x = $("#first").val(); // first dropdown value is stored fire_ajax(x); }); function fire_ajax() { $.ajax({ type: "POST", dataType: "text",//is this data type corect? url: "getter.php", //getter.php is this file. All are in the same file success: function(res) { $("#update").html("<option>"+res+"</option>");//options are added to second dropdwon } }) } }); </script> </body> </html> <?php //php code if (isset($_POST)) { $x=$_POST; // I feel something is wrong here $loans=$loan_master->find_by_sql("SELECT * FROM loan_master WHERE id=".$x); } ?> 

Мне действительно нужно заставить этот код работать. Любые советы высоко ценятся

P: S Ошибки, которые я получаю

Ошибка запроса: Неизвестный столбец «Массив» в разделе «где» Последний запрос выполнен: SELECT * FROM loan_master WHERE id = Массив

Примечание. Преобразование массива в строку в C: \ wamp \ www \ loan_mgmt \ admin \ getter.php в строке 68

Дальнейшие обновления

getter.php – этот файл. (тот же файл, который имеет php-блок после HTML). Я изменил код, как вы сказали.

 <?php if (isset($_POST["loan_master_id"])) { $x=$_POST["loan_master_id"]; // I feel something is wrong here $loans=$loan_master->find_by_sql("SELECT loan_amount FROM loan_master WHERE id=".$x); foreach ($loans as $$loan) { echo "<option value='$loan->id'>$loan->loan_amount</option>"; } } ?> 

Это успешная часть

 success: function(res) { $("#update").html("<option>"+res+"</option>");//options are added to second dropdwon } 

Теперь я не получаю никаких ошибок. Случается, что второй выпадающий список пуст. Нет параметров.

Ну, результат вашего аякс-вызова отправляется как единый ответ. Затем вы помещаете весь ответ в один тег параметра

  $("#update").html("<option>"+res+"</option>");//options are added to second dropdwon 

Если ваш вызов ajax возвращает ответ так же, как ваш код выше

  foreach ($loans as $loan) { echo <option value='$loan->id'>$loan->loan_type</option>"; } 

Тогда вы можете просто сделать что-то вроде …

 document.getElementById('update').innerHTML=res; 

РЕДАКТИРОВАТЬ

Что касается вашей ошибки, мне нужно будет увидеть getter.php, чтобы дать вам точные инструкции, но в основном он говорит, что не может найти то, что вы ищете в базе данных. Ваш вызов ajax не терпит неудачу, ваш запрос на базу данных.

Я предполагаю, что вы забываете передавать любые параметры через ajax в ваш код getter.php. Вы можете увидеть, как передавать информацию из ajax по адресу http://www.w3schools.com/ajax/ajax_xmlhttprequest_send.asp .

Изменить 2

Ваш PHP возвращает одну текстовую строку, которая выглядит как

 <option value='id'>bla blah</option><option value='id'>bla blah</option><option value='id'>bla blah</option><option value='id'>bla blah</option> 

Другими словами, все варианты сразу. Затем вы помещаете эти параметры в один тег параметра.

Проверьте результаты вашего ajax, просто сделав …

 alert(res); 

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

 document.getElementById('update').innerHTML=res; 

Если строка пуста и предупреждение не показывает, что это означает, что ваш запрос базы данных не нашел совпадений и не был пустым.