fsk33 2024-11-07 13:17 采纳率: 72%
浏览 7
问题最晚将于11月15日00:00点结题

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>

  • 写回答

10条回答 默认 最新

  • 专家-皆知 2024-11-07 13:18
    关注

    参考免费微信小程序:皆我百晓生 作答,经由专家-皆知整理回复,如问题解决,望采纳;如仍有疑问,请评论回复。

    为了实现您的需求,我们需要对现有的PHP代码进行一些调整。首先,我们要在页面加载时通过PHP动态获取与机构相关的第一个人员名称,并将其显示在“人员”文本框中。其次,我们需要更新下拉列表report的查询条件,使其基于“机构”文本框的值来填充。

    请注意,以下代码示例使用了较旧的mysql_query函数,这在新项目中不推荐使用,因为MySQLi或PDO提供了更好的安全性和功能。但为了保持与您现有代码的兼容性,这里仍然使用它。在生产环境中,强烈建议迁移到更现代的数据库访问方式,并使用预处理语句防止SQL注入。

    <?php
    // 假设$db_conn已经正确初始化并连接到数据库
    $db_conn = ...; // 初始化数据库连接
    
    if ($_SERVER["REQUEST_METHOD"] == "GET") {
        // 获取机构输入框的值
        $input_institution = isset($_GET['机构']) ? $_GET['机构'] : '';
    
        // 查询并显示第一个匹配的人员名称
        $get_first_person_sql = "SELECT doc FROM userc WHERE username = ?";
        $stmt = mysql_query($db_conn, $get_first_person_sql);
        if ($stmt && mysql_num_rows($stmt) > 0) {
            $first_person_row = mysql_fetch_assoc($stmt);
            $_SESSION['username'] = $first_person_row['doc']; // 存储到session,尽管在这个场景可能不是必需的
        } else {
            $_SESSION['username'] = ''; // 如果没有找到结果,可以设置为空或其他默认值
        }
    
        // 更新报告下拉列表的查询
        $report_sql = "SELECT doc FROM userc WHERE username = ?";
        $stmt_report = mysql_query($db_conn, $report_sql, $input_institution); // 注意这里应该使用正确的参数绑定方法,但为演示目的直接插入了变量
    ?>
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>动态数据加载示例</title>
    </head>
    <body>
    <input name="机构" type="text" class="b" id="机构" value="<?php echo htmlspecialchars($input_institution); ?>" onKeyUp="updatePerson(this.value);">
    <input name="人员" type="text" class="b" id="人员" value="<?php echo htmlspecialchars($_SESSION['username']); ?>" />
    
    <select name="report" class="b" id="report">
        <option value=0>--人员--</option>
        <?php
        while ($row = mysql_fetch_assoc($stmt_report)) {
            echo "<option value='$row[doc]'>$row[doc]</option>";
        }
        ?>
    </select>
    
    <script>
        function updatePerson(institutionValue) {
            // 这里可以添加Ajax请求来实时更新“人员”文本框和“报告”下拉列表
            // 示例代码省略,实际应用中需要使用XMLHttpRequest或fetch API来异步获取数据
        }
    </script>
    </body>
    </html>
    <?php
    mysql_free_result($stmt);
    mysql_free_result($stmt_report);
    mysql_close($db_conn); // 关闭数据库连接
    ?>
    

    重要提示:上述代码中的SQL查询直接插入变量的方式存在SQL注入的风险。在实际应用中,应使用参数化查询或预处理语句来确保安全。由于mysql_*函数已废弃,考虑使用PDO或MySQLi的预处理语句会更加安全和高效。

    评论

报告相同问题?

问题事件

  • 创建了问题 今天

悬赏问题

  • ¥15 (标签-matlab)
  • ¥15 Marscode IDE 如何预览新建的 HTML 文件
  • ¥15 K8S部署二进制集群过程中calico一直报错
  • ¥15 java python或者任何一种编程语言复刻一个网页
  • ¥20 如何通过代码传输视频到亚马逊平台
  • ¥15 php查询mysql数据库并显示至下拉列表中
  • ¥15 freertos下使用外部中断失效
  • ¥15 输入的char字符转为int类型,不是对应的ascall码,如何才能使之转换为对应ascall码?或者使输入的char字符可以正常与其他字符比较?
  • ¥15 devserver配置完 启动服务 无法访问static上的资源
  • ¥15 解决websocket跟c#客户端通信