Если вы не хотите использовать Ajax вы можете установить различные списки в регулярном JavaScript при загрузке страницы в сценарии тега, а затем иметь «onchange» первого раскрывающегося списка, изменить содержимое второго раскрывающегося списка, переключив содержимое выбранного на ту, которая вам нужна.
В основном есть все возможные варианты второго раскрывающегося списка в функции javascript, которая перестраивает раскрывающийся список по мере необходимости, когда изменяется первое раскрывающееся меню.
Для этого потребуется комбинация javascript, PHP и mysql (которую вы уже используете) и не требует никакого Ajax или даже jQuery.
Например, настройте свой первый оператор select с помощью onChange, как это, используя это.значение, так что при его изменении он посылает значение функции (не забудьте указать идентификатор, а так, что мы можем использовать getElementByID):
<select name="courseName" id="courseName" onChange="setBranchList(this.value)" >
Важное замечание о courseName оператора выбора - в приведенном примере «значение» для каждой опции пуст - важно, чтобы это решение работало. Как это:
<option value="<?php echo $row['courseID']; ?>"><?php echo $row['courseName']; ?></option>
Выбрать, для второго выпадающего меню может быть, как это (ID должен быть установлен):
<select name="sDepartment" id="sDepartment">
Тогда есть функция JS, как это с некоторой PHP с вложенными в то время как петли внутри который выбирает все значения для первого раскрывающегося списка во внешнем цикле, а затем создает инструкции построения для всех возможных значений для второго раскрывающегося списка во внутреннем цикле.
<script type="text/javascript">
function setBranchList(courseID)
{
var selector_to_fill = document.getElementById("sDepartment");
selector_to_fill.options.length = 0;
<?php
$course_query = "SELECT * FROM courses ORDER BY courseID";
$course_result = mysql_query($course_query);
while ($course_detail = mysql_fetch_array($course_result))
{ ?>
if (courseID == '<?php echo $course_detail['courseID']; ?>'){
<?php $list_count = 0;
$branch_query = "SELECT * FROM branch WHERE courseID = '$course_detail[courseID]' ORDER BY branchID";
$branch_result = mysql_query($branch_query);
while ($branch_detail = mysql_fetch_array($branch_result))
{ ?>
selector_to_fill.options[<?php echo $list_count; ?>]=new Option("<?php echo $branch_detail['branchName']; ?>", "<?php echo $branch_detail['branchID']; ?>", false, false);
<?php
$list_count++;
} ?>
}
<?php
} ?>
}
</script>
Когда пользователь посещает вашу страницу, РНР строит серию IF заявления в функции setBranchList, основанные на что бы ни в вашей БД, прежде чем отправить его пользователю, так что пользователь получает некоторые Javascript, что выглядит как это:
if (courseID == '1'){
selector_to_fill.options[0]=new Option("Department You Study", "", false, false);
selector_to_fill.options[1]=new Option("Civil Engineering", "1", false, false);
selector_to_fill.options[2]=new Option("Computer Sci & Technology", "2", false, false);
selector_to_fill.options[3]=new Option("Electrical Engineering", "3", false, false);
}
if (courseID == '2'){
selector_to_fill.options[0]=new Option("Department You Study", "", false, false);
selector_to_fill.options[1]=new Option("E&TC", "4", false, false);
selector_to_fill.options[2]=new Option("Mechanical Engineering", "5", false, false);
}
if (courseID == '3'){
selector_to_fill.options[0]=new Option("Department You Study", "", false, false);
}
if (courseID == '4'){
selector_to_fill.options[0]=new Option("Department You Study", "", false, false);
}
if (courseID == '5'){
selector_to_fill.options[0]=new Option("Department You Study", "", false, false);
}
}
Некоторые примечания на этом примере:
'selector_to_fill.options.length = 0;' часть очищает все опции из второго списка при каждом вызове функции
список построен с использованием DOM с 'new Option'.
переменная php $ list_count используется, потому что для каждой опции в предложении select требуется индекс, начинающийся с 0. Эта переменная представляет индекс для каждого элемента и сбрасывается через каждый цикл, чтобы индексы всегда увеличивались правильно.
Я построил это давным-давно, прежде чем я узнал о JQuery и AJAX и снова проверили это решение перед отправкой, чтобы убедиться, что он все еще работает: р
Использование некоторых JavaScript. –
Вам нужно попробовать Ajax. –
Вы можете сделать это с помощью запроса Ajax или получить все значения в разных раскрывающихся списках и использовать JS для отображения только определенного. –