所以我试图让一组文本框显示当前信息到选择框,该选项框是从PHP MySQL请求动态创建的。 select生成正常,但只填充表的最后一行。我想这样做,以便当您更改选择框时,文本框会更新以反映新信息。
从MySQL获取信息的当前代码:
<div id="edithidden" style="display:none;">
<div id="prompt"><strong>Section to Edit:</strong></div>
<div id="answer">
<form id="editorginfo" action="" method="post">
<select id="edit">
<option>Section to Edit</option>
<?php
$query = $db->query("SELECT ID, OrgName, Phone, Location FROM emergencyorg");
while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
$pid=$row['ID'];
$name=$row['OrgName'];
$phone=$row['Phone'];
$loc=$row['Location'];
echo "<option value='" . $pid . "' ";
if($row['OrgName']==$pid){
echo ' selected';
}
echo">" . $name . "</option>";
}
?>
</select>
</div>
<div id="prompt">Organization Name:</div>
<div id="answer">
<input type="text" name="editorgname" id="editorgname" value="<?=$name?>"/>
</div>
<div id="prompt">Organization Phone Number:</div>
<div id="answer">
<input type="text" name="editorgphone" id="editorgphone" value="<?=$phone?>"/>
</div>
<div id="prompt">Orginization Location:</div>
<div id="answer">
<input type="text" name="editorglocation" id="editorglocation" value="<?=$loc?>"/>
</div>
<div id="prompt">
<input type="submit" id="editorg" name="editorg" value="Update Information" />
</div>
</form>
</div>
这是否必须使用AJAX完成?
提前再次感谢!
答案 0 :(得分:0)
是的,ajax可能是你最好的选择。
但是如果您不想这样做(可能将服务器上的命中率保持在最低限度很重要),那么您可以将每个组织的所有数据加载到隐藏字段中(使用组织的ID作为前缀区分不同的组织)然后使用javascript将数据加载到<select>
的onchange事件中的字段
也许是这样的(使用jQuery的未经测试的半伪代码)
<select onchange="changeOrg(this);">
<option value='1'>My org</option>
.
.
.
</select>
<input type="hidden" name="1_org_address" id="1_org_address" value="12 Nowhere St" />
.
.
.
<label>Address</label><br />
<input type="text" name="org_address" id="org_address" />
<script>
function changeOrg(org){
var chosen_org_id = $(org).val()
$("#org_address").val($("#" + chosen_org_id + "_org_address").val());
//etc
}
</script>
答案 1 :(得分:0)
你必须使用javascript来执行此操作。有两种方式:
1)将您的PHP数据保存到javascript对象,并在select上添加更改事件,这取决于所选选项,在javascript对象中查找新输入的值
或
2)在select上添加一个更改事件来执行AJAX请求并刷新输入值
答案 2 :(得分:0)
如果你想避免重新加载页面,那么ajax就是你要走的路。您可以使用jQuery $.post
方法执行此操作。 http://api.jquery.com/jQuery.post/
以下是示例代码:
$('#select').change(function(){
var val = $(this).val();
$.post('data_source.php', {'select_value' : val},
function(response){
$('#table').html(response);
}
);
});
但是如果你输入已经在数据库中,也许你可以立即加载它们,只需在选择框的值发生变化时隐藏和显示内容。