php - 如何通过从另一个下拉列表中选择值来填充下拉列表?

标签 php javascript html mysql

我通过从 mysql 数据库中获取两个下拉列表的记录来构建两个下拉列表(如州和城市),并尝试构建该工具,同时从第一个下拉列表中选择任何值(即任何状态),那时在第二个下拉列表(城市)中,只有在第一个下拉列表中选择的值(州)下的那些值(城市)应该是可见的。

这是我的代码:

<tr>    
        <td id='hed'><span style="font-family:verdana,geneva,sans-  serif">State</state></td>
        <td>
        <?php 
        $dbcon = mysql_connect("@ip","@username","@password");

        if($dbcon)
        {
            mysql_select_db("@database", $dbcon);
        }
        else
        {
            die('error connecting to the database');
        }

        $qry = "select @value(state) from @tablename  ";
        $result = mysql_query($qry) or die(mysql_error());

        $dropdown = "<select name='@valuename' id='officeItemList' style='cursor:pointer;cursor:hand;'>";
        while($row = mysql_fetch_array($result))
        {           
            $dropdown .= "\r\n<option value='{$row['@value']}' > {$row['@value']} </option>";
        }
        $dropdown .= "\r\n</select>"; 
        echo $dropdown;
        mysql_close($dbcon);
        ?>
        </td> 
    </tr>

        <tr>
        <td id='hed'><span style="font-family:verdana,geneva,sans-serif">City</span></td>
        <td colspan="1"> 
        <?php 
        $dbcon = mysql_connect("@ip","@username","@password");

        if($dbcon)  
        {
            mysql_select_db("@database", $dbcon);
        }  
        else
        {
            die('error connecting to the database');
        }  

        $qry = "select value2(city) from @tablename where ";
        $result = mysql_query($qry) or die(mysql_error()); 

        $dropdown = "<select name='@value2' id='officeItemList' style='cursor:pointer;cursor:hand;'>";
        while($row = mysql_fetch_array($result)) 
        {

            $dropdown .= "\r\n<option value='{$row['@value2']}' > {$row['@value2']} </option>";
        }
        $dropdown .= "\r\n</select>"; 
        echo $dropdown;
        mysql_close($dbcon);
        ?>      


        </td>
    </tr>

最佳答案

这是错误的方式。您的 PHP 代码在向用户显示页面之前已完全执行。所以第二个查询永远不会知道用户选择了什么。

正确方法 #1:分两页完成。第一页包含第一个组合,提交时生成第二页并显示第二个组合。

正确方法 #2 虽然不是最佳方法:在一页中完成。将第二个组合的所有可能记录加载到某个 JS 数组。将监听器放置在第一个数组中。当用户选择某些东西时,用 JS 数组中的正确记录填充第二个组合。

正确方法 #3(最正确的方法):在包含 AJAX 请求的页面中执行。用户在第一个组合中选择一个值。它的监听器向某个服务器脚本发送请求,该脚本返回带有第二个组合记录的 JSON 对象。

关于php - 如何通过从另一个下拉列表中选择值来填充下拉列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13953085/

相关文章:

php - Twitter Bootstrap HTML 表单单选按钮不适用于 PHP POST

php - 使用 php 从 mysql 数据库创建一个 xml 文件

html - 具有不透明度的 CSS 悬停过渡

php表单不将日期保存到数据库中

php - Laravel 上的 mysql SQLSTATE[23000] 错误

javascript - CSS 中的砖 block 布局

javascript - Laravel 表单与 jquery 仅显示纯文本

javascript - 使用 R 中的 JavaScript 从网页中抓取链接

javascript - JQuery 无法找到分配给新附加的 HTML 字符串的 ID

CSS响应将div从右移到左下方和中心