Я раньше не использовал 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/ . Это делает все намного проще.