根据下拉列表选择自动填充文本字段,其中所有值均来自MYSQL表

时间:2018-02-11 21:57:59

标签: php jquery html mysql forms

我正在尝试根据下拉选择(instid和instfirstname)自动填充一些文本字段(rate1和rate2)。这些值都在一个名为tbl_insts的mysql表中。我正在尝试How to Get Content in text field dynamically, based on dropdown selection in php中找到的解决方案,但无法让它工作。有没有人有什么建议?提前谢谢。

这是我的mysql表名为tbl_insts

instid instfirstname rate1 rate2

1约翰50 45

2埃里克25 45

这是我的html表单。我可以正确填充下拉列表,但不能填充文本字段。

<select name="instfilter" id="instfilter">
<?php
    if ($stmt = $conn->prepare("select instid, instfirstname from tbl_insts order by instid")) {
    $stmt->execute();
    $stmt->bind_result($instid, $instfirstname);
    echo '<option value="-1" selected="selected">Please select...</option>';
    while ($stmt->fetch()) {
        echo '<option value="'.$instid.'">'.$instfirstname.'</option>';
    }
    $stmt->close();
}
?>
</select>

<!-- Fields that I want to populate based on the selection on top -->
<input type="text" name="rate1" id="rate1" /> 
<input type="text" name="rate2" id="rate2" />

这是我在代码

之前的代码
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js">
</script>
<script>
$('#instfilter').change(function(){
var inst = $(this).val();
$.ajax({
type:'POST',
data:{inst:inst},
url:'getrates.php',
success:function(data){
   $('#rate1').val(data);
   $('#rate2').val(data);
} 
});
});
</script>

这是我在getrates.php中的代码,与上面的html文件在同一目录中。

<?php 
if (isset($_POST['inst'])) {
    $qry = "select rate1, rate2 from tbl_insts where instid = ".
$_POST['inst'];
    $rec = mysql_query($qry);
    if (mysql_num_rows($rec) > 0) {
        while ($res = mysql_fetch_array($rec)) {
            echo $res['rate1'];
            echo $res['rate2'];
        }
    }
}
die();
?>

2 个答案:

答案 0 :(得分:0)

未经测试,但我认为这些更改应该可以胜任。

while ($res = mysql_fetch_array($rec)) {
    $result = [
        'rate1' => $res['rate1'],
        'rate2' => $res['rate2']
    ];
}
.......
die(json_encode($result));

success: function(data){
    data = $.parseJSON(data);
    $('#rate1').val(data.rate1);
    $('#rate2').val(data.rate2);
} 

答案 1 :(得分:0)

  1. 尝试将数据更改为:{inst:inst}到数据:{&#39; inst&#39;:inst}
  2. 现在你从getrates.php返回一个字符串。从您的代码结构中,您可以这样做:

    if (mysql_num_rows($rec) > 0) {
        while ($res = mysql_fetch_array($rec)) {
            echo $res['rate1']."|".$res['rate2'];
        }
    }
    
  3. ..和

    success:function(data){
     var inputs = data.split('|');
       $('#rate1').val(inputs[0]);
       $('#rate2').val(inputs[1]);
    } 
    

    希望这会有所帮助。