从php / mysql动态创建的选择框更新文本框

时间:2012-12-07 02:07:35

标签: php mysql ajax textbox drop-down-menu

所以我试图让一组文本框显示当前信息到选择框,该选项框是从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完成?

提前再次感谢!

3 个答案:

答案 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);
    }
  );
});

但是如果你输入已经在数据库中,也许你可以立即加载它们,只需在选择框的值发生变化时隐藏和显示内容。