fsk33 2024-11-07 13:17 采纳率: 73.5%
浏览 23
已结题

php查询mysql数据库并显示至下拉列表中

PHP网页上有两个text文本框(机构、人员)和一下拉列表框(report),以下代码可运行,现在程序需要修改,使网页加载时满足以下:1、使网页加载时input人员文本框显示查询以下查询:“select doc from userc where username=input机构输入框内容”的第一个结果。2、下拉列表框report里存查询:“select doc from userc where username=input机构输入框”的所有结果。
主要是如何把echo $_SESSION['username']改写成上述查询结果,还有就是"select doc from userc where val='f'"如何改写成上述查询,我写不来。谢谢了

注:所需要的数据库名为userc,字段doc存的是人员名称,字段username存的是机构名字,字段f存是的类型(这个字段现在不需要了)。
//以下是PHP代码:

<input name="机构" type="text" class="b" id="机构" value="<?php echo $row_rsupdate['机构']; ?>"  />
<input name="人员" type="text" class="b" id="人员" value="<?php if ($row_rsupdate['人员']=="" || $row_rsupdate['人员']=="-"){
echo $_SESSION['username']; }else{echo $row_rsupdate['人员'];}?>" />
<select name="report" class="b" id="report" onChange="changevalue7( );">
        <option value=0>--人员--</option>
        <?php
$sql= "select doc from userc where val='f'";//sql语句
$result = mysql_query($sql, $db_conn);//执行sql语句
while($row = mysql_fetch_array($result))
  {
    echo "<option value='$row[doc]'>$row[doc]</option>";//循环,拼凑下拉框选项
  } 
?>
      </select>

以下是javascript,可正常使用,不必改。

<script language="javascript">
function changevalue7( ){
var opt = document.getElementById("report").options;
for(var i=0;i<opt.length;i++){
if(opt [ i ].selected ==true){
document.getElementById("人员").value=opt [ i ].value;
}
}
}
      </script>

  • 写回答

25条回答 默认 最新

  • 杨同学* 2024-11-07 13:42
    关注

    该回答引用ChatGPT4o, 并由本人整理回复, 如有帮助,还请采纳。
    要修改你的PHP代码,使网页加载时能够根据机构文本框的输入,动态查询并显示对应的人员以及下拉列表,你需要做如下几步:

    1. 使人员文本框在页面加载时根据机构的输入来查询显示对应的第一个人员。

    2. 使report下拉框显示对应机构下所有的人员。

    以下是更新后的代码,已根据你的需求进行了修改:

    HTML 部分(表单部分)

    <input name="机构" type="text" class="b" id="机构" value="<?php echo $row_rsupdate['机构']; ?>" />
    <input name="人员" type="text" class="b" id="人员" value="<?php 
        // 获取机构的输入框值
        $org = isset($_POST['机构']) ? $_POST['机构'] : '';
        
        // 连接数据库并查询
        if ($org != '') {
            $sql = "SELECT doc FROM userc WHERE username='$org' LIMIT 1";  // 查询该机构的第一个人员
            $result = mysql_query($sql, $db_conn);
            if ($row = mysql_fetch_array($result)) {
                echo $row['doc'];  // 显示第一个查询到的人员
            }
        } else {
            echo '';  // 如果机构没有输入,人员框保持空白
        }
    ?>" />
    <select name="report" class="b" id="report" onChange="changevalue7();">
        <option value=0>--人员--</option>
        <?php
            // 机构输入框的值
            $org = isset($_POST['机构']) ? $_POST['机构'] : '';
    
            // 如果机构有输入,则查询该机构的所有人员
            if ($org != '') {
                $sql = "SELECT doc FROM userc WHERE username='$org'";  // 查询该机构的所有人员
                $result = mysql_query($sql, $db_conn);
                while($row = mysql_fetch_array($result)) {
                    echo "<option value='$row[doc]'>$row[doc]</option>";  // 显示所有人员
                }
            }
        ?>
    </select>
    

    解释:

    1. 人员文本框的处理:

      • $_POST['机构'] 用来获取机构输入框的内容(假设表单提交时用POST方法)。
      • 如果机构输入框有值,就根据机构名称查询数据库,获取该机构的第一个人员并显示在人员文本框中。
      • 你可能需要加上适当的SQL注入保护(例如,使用 mysqliPDO)来防止SQL注入攻击,当前代码假设是简化版。
    2. 下拉框 report 的处理:

      • 机构输入框有值时,查询该机构的所有人员并展示在下拉列表中。
      • 这个查询会获取该机构的所有人员,并用<option>标签展示在下拉框里。

    JavaScript 部分:

    <script language="javascript">
    function changevalue7() {
        var opt = document.getElementById("report").options;
        for (var i = 0; i < opt.length; i++) {
            if (opt[i].selected == true) {
                document.getElementById("人员").value = opt[i].value;  // 更新人员文本框的值
            }
        }
    }
    </script>
    

    SQL 查询说明:

    • 查询第一个人员:SELECT doc FROM userc WHERE username='$org' LIMIT 1
    • 查询所有人员:SELECT doc FROM userc WHERE username='$org'

    这样修改后,当网页加载时,人员文本框会根据机构文本框的输入自动显示该机构对应的第一个人员。而下拉框report会显示该机构下所有人员的选项。

    注意事项:

    1. SQL注入防范: 当前的代码没有进行 SQL 注入防范,建议使用 mysqliPDO 来防范SQL注入攻击。
    2. 表单提交方式: 代码假设表单是用 POST 提交的,如果是通过 GET 提交,请适当调整。
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(24条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月12日
  • 已采纳回答 11月12日
  • 创建了问题 11月7日