У меня есть маленькая страница PHP, которая содержит два выпадающих списка
Я должен заполнить второй согласно результату, выбранному в первом выпадающем списке.... это возможное? Другими словами, я должен использовать значение, выбранное из первого выпадающего списка, и использовать его в запросе дБ, используемом для заполнения второго выпадающего списка (но это должно быть заполнено после выбора первого выпадающего списка.
Если это возможно какие-либо подсказки? (можно предположить, что я могу заполнить первый выпадающий список от дБ),
спасибо
Вариант 1: встроить данные для второго выбора в документ как скрытые элементы или объекты JS. Обработчик события change
при первом выборе будет заполнять второй выбор. List Apart имеет пример страницы динамического выбора .
Вариант 2: используйте AJAX. Когда первый выбор изменится, сделайте запрос на сервер для содержимого второго выбора, затем заполните его. С библиотекой JS (например, jQuery) это становится довольно просто.
$('select#one').change(
function (evt) {
$('select#two').load('/thing/'+this.value);
}
);
«/ thing /
$('select#one').change(
function (evt) {
$('select#two').load('/thing/'+this.value, {fmt: 'option'});
}
);
Вам потребуется асинхронный обратный вызов на сервер без перезагрузки страницы. (Я сомневаюсь, что вы действительно хотите иметь кнопку, которая отправляет обратно на сервер) Итак, AJAX - это то, что может делать именно это. Добавьте вызов AJAX к обработчику событий onchange
первого раскрывающегося списка, который отправляет выбор обратно на сервер и возвращает содержимое второго раскрывающегося списка. Когда вызов AJAX возвращает новые значения, вы будете использовать его для создания своего контента для второго раскрывающегося списка. Большая часть этого, конечно же, выполняется в Javascript, помимо собственно серверной части, которая останется в PHP.
Вам нужно будет использовать AJAX для отправки выбора из первого раскрывающегося списка на сервер. Затем вы можете запросить базу данных, создать второе раскрывающееся меню и отправить его пользователю.
Есть два способа сделать это. Старый метод «выберите вариант и отправьте на перестройку страницы», который работает практически повсеместно, и новомодные методы AJAX для загрузки содержимого второго раскрывающегося списка без обновления страницы.
У обоих есть преимущества / недостатки, поэтому все сводится к тому, что лучше всего подходит для ваших целей.Метод oldschool вообще не требует никакого javascript, но поскольку он выполняет двустороннюю передачу формы через сервер, вы получите мерцание «очистить окно, а затем перерисовать страницу».
Метод AJAX обходит мерцание при обновлении, но также не будет работать в браузерах с отключенным Javascript. Требуется немного больше кода на стороне клиента для обработки вызовов AJAX и заполнения раскрывающегося списка, но код на стороне сервера будет практически одинаковым для обоих методов: одинаковые запросы, одинаковые циклы поиска, просто другой вывод методы.