2015-05-04 2 views
1

Я работаю над этим 4-мя цепным выпадающим выбором, и все работает хорошо, вот как это работает.Прикованный выбор выпадающего маленького недоразумения

Семестр: Вы выбираете семестрового

Тема: после выбора семестра, вы выбрать тему

раздел: после выбора предмета, вы выбираете, какой раздел

профессор: после выбора раздела , вы выбираете, какой профессор в зависимости от выбранного раздела.

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

семестр: осень-2015

Тема: ИБК 330

раздел: 1

профессор: должен показать Джейсону, но он показывает все преподаватели, которые учат раздел числа 1 (проблема в том, что нужно проверить профессора, который учит выбранному предмету и выбранному разделу, а не только раздел, так как все преподаватели обучают разделу номер 1)

Надеюсь, у вас возникла эта идея.

Вот мой код ниже:

func.php

<html> 
<?php 
//************************************** 
//  Page load dropdown results  // 
//************************************** 
function getTierOne() 
{ 
    $result = mysql_query("SELECT DISTINCT semester FROM three_drops") 
    or die(mysql_error()); 

     while($tier = mysql_fetch_array($result)) 

     { 
      echo '<option value="'.$tier['semester'].'">'.$tier['semester'].'</option>'; 
     } 

} 

//************************************** 
//  First selection results  // 
//************************************** 
if($_GET['func'] == "drop_1" && isset($_GET['func'])) { 
    drop_1($_GET['drop_var']); 
} 

function drop_1($drop_var) 
{ 
    include_once('db.php'); 
    $result = mysql_query("SELECT DISTINCT subject FROM three_drops WHERE semester='$drop_var'") 
    or die(mysql_error()); 
    ?> 
     <br /><br /> <label for="subject" accesskey="s">Subject</label>&nbsp;&nbsp;&nbsp;&nbsp; 
     <?php 
    echo '<select name="drop_2" id="drop_2"> 
      <option value=" " disabled="disabled" selected="selected">Choose one</option>'; 

      while($drop_2 = mysql_fetch_array($result)) 
      { 
       echo '<option value="'.$drop_2['subject'].'">'.$drop_2['subject'].'</option>'; 
      } 



    echo '</select>'; 
    echo "<script type=\"text/javascript\"> 
$('#wait_2').hide(); 
    $('#drop_2').change(function(){ 
     $('#wait_2').show(); 
     $('#result_2').hide(); 
     $.get(\"func.php\", { 
     func: \"drop_2\", 
     drop_var: $('#drop_2').val() 
     }, function(response){ 
     $('#result_2').fadeOut(); 
     setTimeout(\"finishAjax_section('result_2', '\"+escape(response)+\"')\", 400); 
     }); 
     return false; 
    }); 
</script>"; 
} 


//************************************** 
//  Second selection results  // 
//************************************** 
if($_GET['func'] == "drop_2" && isset($_GET['func'])) { 
    drop_2($_GET['drop_var']); 
} 

function drop_2($drop_var) 
{ 
    include_once('db.php'); 
    $result = mysql_query("SELECT DISTINCT section FROM three_drops WHERE subject='$drop_var'") 
    or die(mysql_error()); 
     ?> 
     <br /><br /> <label for="section" accesskey="s">Section</label>&nbsp;&nbsp;&nbsp;&nbsp; 
     <?php 
    echo '<select name="drop_3" id="drop_3"> 
      <option value=" " disabled="disabled" selected="selected">Choose one</option>'; 

      while($drop_3 = mysql_fetch_array($result)) 
      { 
       echo '<option value="'.$drop_3['section'].'">'.$drop_3['section'].'</option>'; 
      } 

       echo '</select>'; 
    echo "<script type=\"text/javascript\"> 
$('#wait_3').hide(); 
    $('#drop_3').change(function(){ 
     $('#wait_3').show(); 
     $('#result_3').hide(); 
     $.get(\"func.php\", { 
     func: \"drop_3\", 
     drop_var: $('#drop_3').val() 
     }, function(response){ 
     $('#result_3').fadeOut(); 
     setTimeout(\"finishAjax_professor('result_3', '\"+escape(response)+\"')\", 400); 
     }); 
     return false; 
    }); 
</script>"; 
} 


//************************************** 
//  Third selection results  // 
//************************************** 
if($_GET['func'] == "drop_3" && isset($_GET['func'])) { 
    drop_3($_GET['drop_var']); 
} 

function drop_3($drop_var) 
{ 
    include_once('db.php'); 
    $result = mysql_query("SELECT DISTINCT professor FROM three_drops WHERE section='$drop_var'") 
    or die(mysql_error()); 
     ?> 
     <br /><br /> <label for="professor" accesskey="s">Professor</label>&nbsp;&nbsp;&nbsp;&nbsp; 
     <?php 
    echo '<select name="drop_4" id="drop_4"> 
      <option value=" " disabled="disabled" selected="selected">Choose one</option>'; 

      while($drop_4 = mysql_fetch_array($result)) 
      { 
       echo '<option value="'.$drop_4['professor'].'">'.$drop_4['professor'].'</option>'; 
      } 

    echo '</select> '; 
} 
?> 
</html> 

index.php

<?php 
    include('db.php'); 
    include('func.php'); 
    ?> 
<div> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script> 
<script type="text/javascript"> 
$(document).ready(function() { 
    $('#wait_1').hide(); 
    $('#drop_1').change(function(){ 
     $('#wait_1').show(); 
     $('#result_1').hide(); 
     $.get("func.php", { 
     func: "drop_1", 
     drop_var: $('#drop_1').val() 
     }, function(response){ 
     $('#result_1').fadeOut(); 
     setTimeout("finishAjax('result_1', '"+escape(response)+"')", 400); 
     }); 
     return false; 
    }); 
}); 

function finishAjax(id, response) { 
    $('#wait_1').hide(); 
    $('#'+id).html(unescape(response)); 
    $('#'+id).fadeIn(); 
} 
function finishAjax_section(id, response) { 
    $('#wait_2').hide(); 
    $('#'+id).html(unescape(response)); 
    $('#'+id).fadeIn(); 
} 
function finishAjax_professor(id, response) { 
    $('#wait_3').hide(); 
    $('#'+id).html(unescape(response)); 
    $('#'+id).fadeIn(); 
} 
</script> 
     <label for="semester" accesskey="s">Semester</label>&nbsp; 
    <select name="drop_1" id="drop_1"> 

     <option value="" selected="selected" disabled="disabled">Select a Category</option> 

     <?php getTierOne(); ?> 

    </select> 

    <span id="wait_1" style="display: none;"> 
    <img alt="Please Wait" src="ajax-loader.gif"/> 
    </span> 
    <span id="result_1" style="display: none;"></span> 
    <span id="wait_2" style="display: none;"> 
    <img alt="Please Wait" src="ajax-loader.gif"/> 
    </span> 
    <span id="result_2" style="display: none;"></span> 
    <span id="wait_3" style="display: none;"> 
    <img alt="Please Wait" src="ajax-loader.gif"/> 
    </span> 
     <span id="result_3" style="display: none;"></span> 

</div> 

базы данных, как это:

semester | subject | section | professor 
Fall-2015 | ELEG-330 | 1 | Jason  
Fall-2015 | ELEG-330 | 2 | Michael 
Fall-2015 | ELEG-210 | 1 | kyle 

Например выше, если семестр был осенью 201 5, сюжет был eleg-330 и раздел 1, профессор показал бы, что и Джейсон, и Кайл неверны.

Заранее спасибо.

+0

у вас есть '... WHERE section = '$ drop_var' AND subject = '$ resulta'" ', но вы не определяете' $ resulta' в 'function drop_3 ($ drop_var)'. – Sean

+0

Я не знаю, что определить, я сделал это, чтобы на самом деле начать что-то, но я не знаю, представьте, что его нет, – Sam

+0

@Sean удалил его, так как это был мусор, я просто положил – Sam

ответ

2

первое, что вам нужно изменить $.get() в function drop_2($drop_var) так, что он проходит другие данные

function drop_2($drop_var) 
{ 
    include_once('db.php'); 
    ...[your other code]... 

       echo '</select>'; 
    echo "<script type=\"text/javascript\"> 
$('#wait_3').hide(); 
    $('#drop_3').change(function(){ 
     $('#wait_3').show(); 
     $('#result_3').hide(); 
     $.get(\"func.php\", { 
     func: \"drop_3\", 
     drop_var1: $('#drop_1').val(), //semester 
     drop_var2: $('#drop_2').val(), //subject 
     drop_var3: $('#drop_3').val() //section 
     }, function(response){ 
     $('#result_3').fadeOut(); 
     setTimeout(\"finishAjax_professor('result_3', '\"+escape(response)+\"')\", 400); 
     }); 
     return false; 
    }); 
</script>"; 
} 

затем в вашем function drop_3(), вам нужно добавить другие параметры

//************************************** 
//  Third selection results  // 
//************************************** 
if($_GET['func'] == "drop_3" && isset($_GET['func'])) { 
    drop_3($_GET['drop_var1'],$_GET['drop_var2'],$_GET['drop_var3']); 
} 

function drop_3($drop_var1,$drop_var2,$drop_var3) 
{ 
    include_once('db.php'); 
    $result = mysql_query("SELECT DISTINCT professor FROM three_drops WHERE semester='$drop_var1' AND subject='$drop_var2' AND section='$drop_var3'") 
    or die(mysql_error()); 
     ?> 
     ...[rest of your code]... 
} 
+0

спасибо вам с серьезной любовью! – Sam

2

Вы не передавая предыдущую информацию на каждом последующем шаге. Передайте тему на третью функцию, добавив его в своем ГЮТ, например, так:

$('#drop_3').change(function(){ 
    $('#wait_3').show(); 
    $('#result_3').hide(); 
    $.get(\"func.php\", { 
     func: \"drop_3\", 
     drop_var: $('#drop_3').val(), 
     prev_var: '".$drop_var."' // added $prev_var here 
    }, function(response){ 
     $('#result_3').fadeOut(); 
     setTimeout(\"finishAjax_professor('result_3', '\"+escape(response)+\"')\", 400); 
    }); 
    return false; 
}); 

Затем передать его вторые пары в вашей третьей функции, и использовать его в запросе:

if($_GET['func'] == "drop_3" && isset($_GET['func'])) { 
    drop_3($_GET['drop_var'], $_GET['prev_var'); 
} 
function drop_3($drop_var, $prev_var) // $prev_var here 
{ 
    include_once('db.php'); 
    $result = mysql_query("SELECT DISTINCT professor FROM three_drops WHERE section='$drop_var' AND subject='$prev_var'") // $prev_var here 
    or die(mysql_error()); 

    //etc. 
} 
+0

спасибо. плохо попробуйте это также. – Sam

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