Я работаю над этим несколько дней и не могу найти окончательного решения. Я прошел через подобные вопросы 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;
Если строка пуста и предупреждение не показывает, что это означает, что ваш запрос базы данных не нашел совпадений и не был пустым.