0

所以我试图让一组文本框显示当前选择框的信息,该选择框是从 PHP MySQL 请求动态创建的。选择生成正常,但仅填充表格的最后一行。我想让它在您更改选择框时更新文本框以反映新信息。

从 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 来完成?

再次提前感谢!

4

3 回答 3

0

您将不得不使用 javascript 来执行此操作。有2种方式:

1) 将您的 PHP 数据保存到一个 javascript 对象,并在 select 上添加一个更改事件,这取决于所选的选项,进入 javascript 对象以查找新输入的值

或者

2)在选择上添加一个更改事件以执行 AJAX 请求并刷新输入的值

于 2012-12-07T02:15:32.710 回答
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);
    }
  );
});

但是如果您的输入已经在数据库中,也许您可​​以立即加载它们并在选择框的值更改时隐藏和显示内容。

于 2012-12-07T02:20:38.937 回答
0

是的,ajax 可能是你最好的选择。

但是,如果您不想这样做(也许将服务器上的命中率保持在最低限度很重要),那么您可以将每个组织的所有数据加载到隐藏字段中(使用组织的 ID 作为前缀来区分不同的组织)然后使用javascript将数据加载到onchange事件中的字段中<select>

也许是这样的(使用 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>
于 2012-12-07T02:12:58.210 回答