客户需求,做一个影像诊断模板调用的网页程序,目前有一个存储模板的数据库表: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
元素的值。
如果以上回答对您有所帮助,点击一下采纳该答案~谢谢