2012-02-25 23 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”属性。它应该是“价值”。请修复你的代码。

希望它有帮助!

注意:上面的代码都没有经过测试,但我希望它能正常工作