Я пытаюсь создать умную форму, которая автоматически ограничит параметры, доступные во втором раскрывающемся списке.
Справочная информация. Я создаю систему продажи билетов, и я хотел бы, чтобы пользователь выбрал сайт из раскрывающегося списка «Выбор сайта», а затем выпадающий список «Пользовательский выбор» будет содержать только пользователей, связанных с сайтом, выбранным при первом выпадающем списке , всю информацию, заполненную MySQL.
Будущее: я хотел бы перечислить все службы, связанные с этим пользователем, с помощью меток в разделе «Выбрать уязвимые службы»,
Мои js довольно бедны. До сих пор мне удалось найти код, выполнив поиск здесь, что позволило мне написать идентификатор компьютера пользователя в текстовое поле. Но я не могу понять, как захватить вывод и запрос для имени компьютера (другая таблица) и отобразить это как опцию галочки или использовать тот же метод для ограничения следующей партии ящиков выбора. Весь код, указанный ниже, я еще не очистил, альфа-фазу.
Я понимаю, что я мог бы сделать это пошагово, используя только PHP, но я пытаюсь сделать свою кодировку здесь и там.
Отображение выпадающих списков:
<h3>Assign Site</h3> <select id="site_add" name="site_add" style="width:217px; height:20px !important;"> <option value="-1"></option>'; $o = "SELECT * FROM company_sites WHERE company_id = " . $company_id . " ORDER BY sitename"; $rs = mysql_query($o); $nr = mysql_num_rows($rs); for ($i=0; $i<$nr; $i++) { $r = mysql_fetch_array($rs); echo '<option value="' . $r['id'] . '">' . $r['sitename'] . '</option>'; } <h3>Assign User</h3> <select id="comp_add" name="comp_add_1" style="width:217px; height:20px !important;"> <option value=""></option>'; $o = "SELECT * FROM company_staff WHERE company_id = " . $company_id . " ORDER BY id DESC"; $rs = mysql_query($o); $nr = mysql_num_rows($rs); for ($i=0; $i<$nr; $i++) { $r = mysql_fetch_array($rs); $user_computer_id = $r['computer_id']; echo '<option value="' . $r['id'] . '">' . $r['firstname'] . ' ' . $r['lastname'] . '</option>'; }
Текущий JS для вывода идентификатора компьютера выбранного пользователя в текстовое поле:
<script type="text/javascript"> window.onload=function() { attachBehaviors(); }; // function attachBehaviors() { document.getElementById(\'person\').onchange=function() { loadUser(this.options[this.selectedIndex].value); // <-- check this, may be incorrect } } function loadUser(optionvalue) { // Always set a default if (optionvalue==\'\') { return; } opts = optionvalue.split(\':\'); var name = opts[0]; var email = opts[1]; document.getElementById(\'computer_id\').value=name; } </script> <select name="person" id="person"> <option value=""></option>'; $result=mysql_query("SELECT * FROM company_staff"); while($row=mysql_fetch_array($result)) { $submit_firstname = $row['firstname']; $submit_lastname = $row['lastname']; $submit_staff_id = $row['id']; $submit_computer_id = $row['computer_id']; echo '<option value="' . $submit_staff_id . '">' . $submit_firstname . ' ' . $submit_lastname . '</option>\n'; } echo ' </select> <input type="text" id="computer_id" name="name" placeholder="name" /> ';
Любые рекомендации о том, как достичь этого, будут очень признательны!
Заранее спасибо!
Вам нужен AJAX, это комбинация PHP и JS. (данные запроса javascript с сервера, php обрабатывает запрос, возвращает данные).
Вам нужно будет немного поработать с AJAX, чтобы понять, как сделать это поле выбора.
Это процесс в теории:
Создайте обработчик событий onchange, который будет вызывать сервер для получения информации.
..опции..
Эта функция updateNewDropDown примет форму формы ответа сервера, которую вы выбрали, и извлеките новые данные через PHP для второго меню выбора и создайте новое меню выбора с предоставленным ответом данных AJAX.
AJAX учебники:
http://api.jquery.com/jQuery.ajax/ http://www.w3schools.com/ajax/default.asp