PHP下拉框加载数据库字段,选择下拉列表后将对应的其它数据库字段显示在不同文本框中。

客户需求,做一个影像诊断模板调用的网页程序,目前有一个存储模板的数据库表:mouldx,里有三个字段,分别是:模板名称、影像征象、诊断意见。我开发在PHP网页的下拉列表框中已能加载模板名称了,但是需要在选择下拉列表框中选择“模板名称”后,能在textarea name="影像征象1"和textarea name="诊断意见1"两个框中显示数据库中对应的影像征象、诊断意见字段,我做的以下代码,在选择下拉框中的模板名称后,只能在textarea name="影像征象1"中显示数据库的“影像征象”字段,在textarea name="诊断意见1"框中显示的却是模板名称,需要怎么修改代码,才能同时textarea name="影像征象1"和textarea name="诊断意见1"两个框中显示数据库中对应的影像征象、诊断意见字段呢?

<script>
$(function(){
$("[name='drxiongbu']").change(function(){
var a = $(this).find("option:selected").text();
var a = a.replace(/\"/g, "");
var b = $(this).find("option:selected").val();
$("[name='诊断意见1']").val(a);
$("[name='影像征象1']").val(b);
});
});
</script>
 <select name="drxiongbu" class="b" id="drxiongbu">
              <option value=0>--胸部DR--</option>
<?php
$sql= "select 模板名称 from mouldx where 设备类型='DR' and 位置='胸部DR'";//sql语句
$result = mysql_query($sql, $db_conn);//执行sql语句
while($row = mysql_fetch_array($result))
  {$sql2= "select 影像征象 from mouldx where 模板名称='$row[模板名称]'";
  $result2 = mysql_query($sql2, $db_conn);
  $row2 = mysql_fetch_array($result2);
 
    echo "<option value='$row2[影像征象]'>$row[模板名称]</option>";//循环,拼凑下拉框选项
  } 
?>
</select>

<textarea name="影像征象1" class="c"  id="影像征象1" ><?php echo $row_rsupdate['影像征象1']; ?></textarea>
<textarea name="诊断意见1" class="d"  id="诊断意见1"><?php echo $row_rsupdate['诊断意见1']; ?></textarea>

影像征象、诊断意见你没有先从sql里检索出来,改成这样:

$(function() {
  $("[name='drxiongbu']").change(function() {
    var templateName = $(this).find("option:selected").text().replace(/\\"/g, "");
    var query = "select 影像征象, 诊断意见 from mouldx where 模板名称='" + templateName + "'";
    $.get("query.php", { query: query }, function(data) {
      var result = JSON.parse(data);
      $("[name='影像征象1']").val(result[0].影像征象);
      $("[name='诊断意见1']").val(result[0].诊断意见);
    });
  });
});


引用chatGPT作答,根据您提供的代码,以下是我修改后的代码:

<script>
$(function(){
    $("[name='drxiongbu']").change(function(){
        var templateName = $(this).find("option:selected").text();
        templateName = templateName.replace(/\"/g, "");
        var sql = "select 影像征象, 诊断意见 from mouldx where 模板名称='" + templateName + "'";
        $.ajax({
            url: "your_php_script.php", // 替换成你的 PHP 脚本路径
            type: "POST",
            data: {"sql": sql},
            dataType: "json",
            success: function(data){
                $("[name='影像征象1']").val(data.影像征象);
                $("[name='诊断意见1']").val(data.诊断意见);
            },
            error: function(){
                alert("获取模板数据失败");
            }
        });
    });
});
</script>

<select name="drxiongbu" class="b" id="drxiongbu">
    <option value="0">--胸部DR--</option>
    <?php
        $sql = "select 模板名称 from mouldx where 设备类型='DR' and 位置='胸部DR'";
        $result = mysql_query($sql, $db_conn);
        while($row = mysql_fetch_array($result)){
            echo "<option value='$row[模板名称]'>$row[模板名称]</option>";
        }
    ?>
</select>

<textarea name="影像征象1" class="c" id="影像征象1" ></textarea>
<textarea name="诊断意见1" class="d" id="诊断意见1"></textarea>

这里使用了 AJAX 技术,通过 jQuery 的 $.ajax() 方法向服务器端的 PHP 脚本发送 SQL 语句,PHP 脚本执行查询操作并返回查询结果,前端通过 success 回调函数获取数据并将其显示在对应的 textarea 中。这样可以实现同时显示影像征象和诊断意见。

请注意,此处的 PHP 脚本应该对 SQL 查询语句进行安全的过滤和验证,避免 SQL 注入攻击。同时,使用 mysql_query() 函数进行数据库操作已经不推荐使用,您应该尽量使用 mysqli 或 PDO 等现代的 PHP 数据库扩展。

该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
根据你提供的代码,问题出现在以下这行代码:

$("[name='诊断意见1']").val(a);
$("[name='影像征象1']").val(b);

这段代码的意思是将选择的模板名称存储在$a变量中,将影像征象字段存储在$b变量中,然后将它们分别设置为textarea name="诊断意见1"textarea name="影像征象1"的值。因此,你需要修改代码以便选择模板名称后,将影像征象和诊断意见字段的值分别显示在对应的textarea元素中。

你可以使用以下代码来实现:

$("[name='drxiongbu']").change(function(){
    var selectedOption = $(this).find("option:selected");
    var templateName = selectedOption.text().replace(/\"/g, "");
    var imageFeature = selectedOption.data("image-feature");
    var diagnosisOpinion = selectedOption.data("diagnosis-opinion");
    $("[name='影像征象1']").val(imageFeature);
    $("[name='诊断意见1']").val(diagnosisOpinion);
});

在这个代码中,我们使用data()方法从选定的选项中提取影像征象和诊断意见的值,并将它们分别设置为对应的textarea元素的值。为了从选定的选项中提取这些值,你需要在<option>元素中添加data-属性,以存储影像征象和诊断意见的值。以下是你可以尝试的修改后的代码:

<select name="drxiongbu" class="b" id="drxiongbu">
    <option value="0">--胸部DR--</option>
    <?php
    $sql= "select 模板名称, 影像征象, 诊断意见 from mouldx where 设备类型='DR' and 位置='胸部DR'";
    $result = mysql_query($sql, $db_conn);
    while($row = mysql_fetch_array($result)) {
        echo "<option value='{$row['模板名称']}' data-image-feature='{$row['影像征象']}' data-diagnosis-opinion='{$row['诊断意见']}'>{$row['模板名称']}</option>";
    }
    ?>
</select>

<textarea name="影像征象1" class="c"  id="影像征象1"><?php echo $row_rsupdate['影像征象1']; ?></textarea>
<textarea name="诊断意见1" class="d"  id="诊断意见1"><?php echo $row_rsupdate['诊断意见1']; ?></textarea>

在上面的代码中,我们使用data-image-feature属性和data-diagnosis-opinion属性存储影像征象和诊断意见的值,并将它们添加到<option>元素中。然后,在JavaScript代码中,我们使用data()方法将这些值提取出来,并将它们分别设置为对应的textarea元素的值。


如果以上回答对您有所帮助,点击一下采纳该答案~谢谢