2012-04-24 119 views
0

任何人都可以帮助我解决这个问题。为了显示来自MySql数据库的rezults,我必须选择学校,课程,科目和考试。但列出所有课程或所有考试不是很实用,所以我想做另一个功能,当我在第一个选择框中选择一些学校时,它会在第二个选择框中显示我选择的学校的课程。相关选择输入

我的代码是:在abc.php得到学校的值或ID,让你需要的标签,并将结果返回到HTML 功能get_options的相关ID

<div id="allselects"> 
<form action="viewing.php" method="post" name="filt"> 
<div class="multsarrange"> 
<h1 class="choosetext" >Chose Schools</h1> 
<select class="multipleselect" name="schools[]" size="8" multiple="multiple" id="shkll"> 
    <?php 

         $sql = "SELECT * FROM schools "; 
         $scc=mysql_query($sql); 
         while ($db_f = mysql_fetch_assoc($scc)) { 
         $schcd=$db_f['schoolcode']; 
         $schc=$db_f['schoolname']; 
         echo "<option value=$schcd >$schc</option>"; 
          } 
         ?> 
    </select> 
</div> 
<div class="multsarrange" id="clasaajax"> 
<h1 class="choosetext" >Chose an Classes</h1> 
<select class="multipleselect" name="classes[]" size="8" multiple="multiple" "> 
<?php 

         $c = "SELECT * FROM classes "; 
         $cl=mysql_query($c); 
         while ($db_f = mysql_fetch_assoc($cl)) { 
         $clsc=$db_f['schoolID']; 
         $claid=$db_f['classID']; 
         $clay=$db_f['year']; 
         $clanm=$db_f['className']; 
         $name=schoolidton($clsc)." ".$clay." ".$clanm; 
         echo "<option value=$claid >$name</option>"; 
    } 
?> 
</select> 
</div> 
<div class="multsarrange"> 
<h1 class="choosetext" >Chose Subjects</h1> 
<select class="multipleselect" name="subjects[]" size="8" multiple="multiple"> 
<?php 

         $sb = "SELECT * FROM subjects "; 
         $sbi=mysql_query($sb); 
         while ($db_f = mysql_fetch_assoc($sbi)) { 
         $sbnm=$db_f['subjectName']; 
         $sbid=$db_f['subjectID']; 
         echo "<option value=$sbid >$sbnm</option>"; 
          } 
         ?> 
</select> 
</div> 
<div class="multsarrange"> 
<h1 class="choosetext" >Chose Exams</h1> 
<select class="multipleselect" name="exams[]" size="8" multiple="multiple"> 
<?php 

         $e = "SELECT * FROM exams "; 
         $ex=mysql_query($e); 
         while ($db_f = mysql_fetch_assoc($ex)) { 
         $id=$db_f['examID']; 
         $sub=$db_f['subjectID']; 
         $desc=$db_f['description']; 
         $year=$db_f['year']; 
         $data=$db_f['data']; 

         $exnam=subidton($sub)." - ".$year." - ".$desc." - ".$data; 
         echo "<option value=$id >$exnam</option>"; 
          } 
         ?> 
</select> 
</div> 
<div id="longsubmit"> 
</br></br> 
<input name="submit" type="submit" value="View" /> 
</div> 
</form> 
</div> 

回答

0

使用AJAX(表, id_field,name_field,where_field,FIELD_VALUE,select_id,edit_id){

$('#'+select_id).html('<option>Loading...</option>'); 
$.ajax({ 
     type: "POST", url: "abc.php", data: "&table="+table+"&id_field="+id_field+"&name_field="+name_field+"&where_field="+where_field+"&field_value="+field_value+ "&edit_id=" + edit_id +"&get_option=1", 
     complete: function(data){ 
      //alert(data.responseText); 
       $('#'+select_id).html(data.responseText); 
     } 
    }); 

}

1

你需要做的是以下几点:

  1. 设置在select事件侦听器监听change事件 - see here
  2. 进程通过将所选值发送到PHP脚本来更改事件 - see here
  3. 使用PHP获得选择的值,并根据需要(你已经做到这一点位)
  4. 发送相关的HTML输出或JSON或XML如果你只是创建一个新的选择列表查询数据库 - 这是一个简单的回声
  5. 使用JavaScript将输出写入屏幕 - 根据PHP函数的回复创建新元素或插入HTML响应

此过程中有很多事情 - 每个都有多个选项 - i建议你试图解决每一个问题,如果你遇到困难,回来时会遇到具体的问题

+0

我已经完成了这段代码,它对于一个值很有效 当我选择一所学校时,该学校的课程列在了sexond选择框中,但我无法修改它以使用多个选择值。 这是我使用的代码 – 2012-04-24 11:41:14

+0

函数AjaxFunction(cat_id) var httpxml; 尝试 {0},{0},{0},Firefox 8.0+,Safari httpxml = new XMLHttpRequest(); } 赶上(E) {// Internet Explorer的 \t \t尝试 \t \t \t \t \t { \t \t \t \t httpxml =新的ActiveXObject(“MSXML2。XMLHTTP “); \t \t \t \t} \t \t \t赶上(E) \t \t \t \t { \t \t \t尝试 \t \t { \t \t httpxml =新的ActiveXObject(” Microsoft.XMLHTTP“); \t \t} \t \t \t catch(e) \t \t { \t \t alert(“您的浏览器不支持AJAX!”); \t \t return false; \t \t} \t \t} }'' – 2012-04-24 11:41:39

+0

功能stateck() { 如果(httpxml.readyState == 4){ 的document.getElementById( “CLS”)的innerHTML = httpxml.responseText。 } } \t var url =“clasajax.php”; url = url +“?schools [] =”+ cat_id; url = url +“&sid =”+ Math.random(); httpxml.onreadystatechange = stateck; httpxml.open(“GET”,url,true); httpxml.send(null); } ' – 2012-04-24 11:42:53