使用SQL数据库链接2个SELECT框 - PHP

时间:2012-02-25 19:15:43

标签: php mysql sql ajax select

因此,即时创建一个将数据提交到SQL数据库的表单。我有2个选择下拉列表,其中包含“模块代码”和“模块标题”的数据。在数据库中,模块标题将只有一个模块代码,例如,团队项目(模块标题)具有模块代码11COB290。

如何获取它,以便当用户选择给定的模块名称时,或者模块标题将自动选择正确的伙伴,即选择与用户选择的模块名称相关的正确模块代码而不按任何提交按钮?

以下代码是我到目前为止的下拉选择框和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>

1 个答案:

答案 0 :(得分:0)

除非有特殊原因,为什么不给一个SELECT框而不是两个?

<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事件,并在该事件中,向PHP脚本发送一个AJAX请求。 PHP脚本将请求模块代码或标题,并将其发送回AJAX处理程序。然后,AJAX处理程序可以自动将SELECTED标记为另一个SELECT中的相应选项。如果你还没有这方面的经验,你可能需要一段时间来研究AJAX和JavaScript。

另一个想法可能是使用模块代码作为标题SELECT和模块标题的值作为代码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”属性。它应该是“价值”而不是。请修改您的代码。

希望它有所帮助!

注意:以上代码均未经过测试,但我希望它能正常运行