2012-04-24 102 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