2012-02-25 29 views
0

因此,即時創建將提交數據到SQL數據庫的表單。我有2個選擇下拉菜單,其中包含「模塊代碼」和「模塊標題」的數據。在數據庫中,模塊標題只有一個模塊代碼,例如Team project(模塊標題)的模塊代碼爲11COB290。使用SQL數據庫鏈接2個選擇框 - PHP

我怎樣才能得到它,這樣,當用戶選擇一個給定的模塊名稱或模塊的題目是會自動選擇正確的合作伙伴,即選擇合適的模塊代碼多數民衆贊成相關的模塊名稱的用戶已經選擇了不按任何提交按鈕?

下面的代碼是下拉選擇框和PHP代碼,我到目前爲止有:

<td align="center"> 
<select name='ModuleTitle' id='ModuleTitle' style='width:100%;'> 
<option>Select...</option> 

    <?php 
     //3. Perform database query 
     $result = mysql_query("SELECT * FROM Module 
     ORDER BY `ModTitle` ASC;", $connection); 
     if(!$result){ 
      die("Database query failed: " . mysql_error()); 
     } 
     //4. Use Returned Data 
     while ($row = mysql_fetch_array($result)) { 
      $module = $row[2]; 
      echo "<option name='{$module}'>{$module}</option><br />";  
     } 
    ?> 
    </select> 
    </td> 

    <td align="center"> 
    <select name='ModuleCode' id='ModuleCode' style='width:100%;'> 
    <option>Select...</option> 

    <?php  
     //3. Perform database query 
     $result = mysql_query("SELECT * FROM Module 
     ORDER BY `ModCode` ASC;", $connection); 
     if(!$result){ 
      die("Database query failed: " . mysql_error()); 
     } 
    //4. Use Returned Data 
     while ($row = mysql_fetch_array($result)) { 
      $module = $row[3]; 
      echo "<option name='{$module}'>{$module}</option><br />";  
     } 
    ?> 
    </select> 
    </td> 
+0

研究jQuery的AJAX函數。您可以從下拉列表中處理更改事件,並對PHP進行AJAX調用。 – 2012-02-25 19:19:57

+0

如果我找對了,你需要使用:JS鏈式選擇列表。 – 2012-02-25 19:29:55

回答

0

除非有特殊原因的話,爲什麼不給一個選擇框,而不是兩個?

<td align="center"> 
<select name='ModuleTitle' id='ModuleTitle' style='width:100%;'> 
<option>Select...</option> 
<?php 
    //3. Perform database query 
    $result = mysql_query("SELECT * FROM Module ORDER BY `ModTitle` ASC;", $connection); 
    if(!$result){ 
     die("Database query failed: " . mysql_error()); 
    } 
    //4. Use Returned Data 
    while ($row = mysql_fetch_array($result)) { 
     $module = $row[2] . ' (' . $row[3] . ')'; 
     $moduleCode = $row[3]; 
     echo "<option value='{$moduleCode}'>{$module}</option>"; 
    } 
?> 
</select> 
</td> 

或者,如果您想保留2個SELECT,請使用AJAX調用。我們的想法是在每個SELECT上定義onChange事件,並在該事件中向AJAX請求發送一個PHP腳本。 PHP腳本將請求模塊代碼或標題並將其發送回AJAX處理程序。然後,AJAX處理程序可以自動標記爲SELECTED另一個SELECT中的相應選項。如果您還沒有體驗過這些東西,您可能需要一段時間來研究AJAX和JavaScript。

另一個想法可能是使用模塊代碼作爲標題SELECT和模塊標題的值作爲代碼SELECT的值。例如,標題選擇將是:

<SELECT name="ModuleTitle" id="ModuleTitle" style="width:100%;"> 
<OPTION>Select...</option> 
<OPTION value="123">Title 123</OPTION> 
<OPTION value="345">Title 345</OPTION> 
<OPTION value="567">Title 567</OPTION> 
</SELECT> 

然後在onChange事件處理程序,你可能會做這樣的事情:

var selObj = document.getElementById('ModuleTitle'); 
var selIndex = selObj.selectedIndex; 
document.getElementById('ModuleCode').value = selObj.option[selIndex].text; 

順便說一句,對於沒有「name」屬性。它應該是「價值」。請修復你的代碼。

希望它有幫助!

注意:上面的代碼都沒有經過測試,但我希望它能正常工作