2016-08-13 4 views
3

Таблица coursesКак создать динамический выпадающий список в PHP?

courseID courseName 
    1 Diploma-Polytechnic 
    2 UG-Bachelor of Architecture (B.Arch) 
    3 UG-Bachelor of Engineering (B.E) 
    4 UG-Bachelor of Technology (B.Tech) 
    5 PG-Master of Architecture (M.Arch) 

Таблица branch

branchID courseID branchName 
1    1 Civil Engineering 
2    1 Computer Sci & Technology 
3    1 Electrical Engineering 
4    2 E&TC 
5    2 Mechanical Engineering 

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

<select name="courseName"> 
     <option value="">Select Courses</option> 
    <?php $sql = "SELECT * FROM courses "; 
    $res = mysql_query($sql) or die(mysql_error()); 
    while($row=mysql_fetch_assoc($res)) { 
     ?> 
    <option value=""><?php echo $row['courseName']; ?></option> 
    <?php } ?> 
    </select> 

Второй выпадающий список остается пустым, потому что я хочу что-то вроде этого.

Если пользователь выбирает 1 курс из 1-го выпадающего списка, тогда автоматически данные должны быть получены из таблицы филиалов во втором раскрывающемся списке с соответствующим курсом. Было бы лучше, если их IF условие для этого

 <select name="sDepartment"> 

    <option value="">Department You Study</option> 
    <option value=""> </option></select> 

Например, если пользователь Выберите Diploma-Polytechnic из ID1 С 1-го меню списка Тогда второй Выпадающий список должен иметь Параметры

Civil Engineering 
Computer Sci & Technology 
Electrical Engineering 

Если возможно плз предоставить мне Код JS/AJAX, совместимый с моим кодом.

+0

Использование некоторых JavaScript. –

+1

Вам нужно попробовать Ajax. –

+0

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

ответ

0

Вы должны использовать Ajax:

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

если выбрать 1 изменяет: вызов вашей функции, которые будут размещать значение для PHP кода, затем: заполнить ваш выберите 2 с результатом.

Вы можете использовать JQuery, который очень прост!

POST: https://api.jquery.com/jquery.post/

слушать изменения: https://api.jquery.com/change/

0

Если вы не хотите использовать 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 и снова проверили это решение перед отправкой, чтобы убедиться, что он все еще работает: р

Смежные вопросы