Ajax-подход к заполнению второго динамического раскрывающегося списка на основе выбора в первом

Я раньше не использовал Ajax, и это кажется простым. У меня есть отдельные части головоломки, но не знаю, как их собрать.

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

<?php $sql = "SELECT title, nid FROM node where type= 'hotel'"; $hotels = mysql_query($sql); ?> <select name="hotels" id="hotels"> <?php while($row = mysql_fetch_array($hotels)) { echo "<option value=\"".$row['nid']."\">".$row['title']."\n "; } ?> </select> 

Второе выпадающее меню должно быть заполнено на основе значения, выбранного выше. Поэтому в основном я хочу взять идентификатор выбранного элемента, а затем использовать его в запросе для заполнения второго раскрывающегося списка.

Я бы использовал приведенный выше код, но со следующим предложением для SQL-запроса:

 SELECT title, nid from node where type = 'season' AND hotel_nid = X 

Где X – идентификатор выбранногоIndex в первом выпадающем списке.

Несмотря на то, что код работает, я не знаю, как объединить эти два. Я мог бы использовать Javascript для изменения InnerHTML div, называемого «сезонами», путем печати кода для извлечения и отображения выпадающих списков.

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

Ваш PHP-скрипт, заполняющий второй список, должен вызываться через Ajax, когда пользователь меняет значение первого выпадающего списка. Поэтому вы должны добавить onchange = "myFunctionToPopulate (this.value)"; к первому выпадающему списку.

Если вы не знаете, как это сделать, я бы предложил также использовать JS-библиотеку, такую ​​как jQuery, и мы вышлем вам простой код для этого.

отредактированный

С помощью jQuery вы можете сделать что-то вроде этого:

 <select name="first_dropdown" onchange="$('#dropdown2_container').load('your_script.php?nid='+this.value);"> <option.... </select> ... <div id="dropdown2_container" style="display:none"> </div> 

Где your_script.php вернет весь тег select.

вы можете использовать innerHTML вашего поля <select> вместо <div> , но я бы действительно посоветовал вам взглянуть на jQuery: http://api.jquery.com/category/ajax/ . Это делает все намного проще.