Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 用所选选项中的数据库值填充textarea_Php_Jquery - Fatal编程技术网

Php 用所选选项中的数据库值填充textarea

Php 用所选选项中的数据库值填充textarea,php,jquery,Php,Jquery,我有一个select元素,它在数据库中具有序列值: <option value="1">one</option> <option value="2">two</option> 然后我有了这个PHP代码,它将表数据放入一个数组中 <?php $return_arr = array(); $sql="SELECT * from tickets_standardresponses "; $rs=mysql_query($sql,$conn) or

我有一个select元素,它在数据库中具有序列值:

<option value="1">one</option>
<option value="2">two</option>
然后我有了这个PHP代码,它将表数据放入一个数组中

<?php
$return_arr = array();
$sql="SELECT * from tickets_standardresponses ";
$rs=mysql_query($sql,$conn) or die(mysql_error());
while($result=mysql_fetch_array($rs)) {
    $return_arr[] = array('sequence' => $result["sequence"], 'response' => $result["response"]);
}
$data = json_encode($return_arr);
?>
<script type="text/javascript">
$(document).ready(function(){
    var data = <?php echo $data; ?>;
    $('#standard_response').on('change',function() {

    });
});
</script>
如何根据所选选项填充文本区域

例如,如果所选选项的值=1,我希望将序列=1的数组中的响应数据放入其中

我不想使用Ajax使用GET/POST请求

        var data = <?php echo $data; ?>;

        $('#response').on('change', function() {

            var sequence = $(this).val();
            //Check each object in the data array
            $.each(data, function( index, obj ) {
                if (obj.sequence === sequence) {
                    //The "result" textarea
                    $('#result').text(obj.response);
                }
            });
        });
您必须在数据数组中循环并检查每个对象序列,看看它是否与所选选项的值匹配


注意:确保序列参数是字符串或将选项值转换为整数

这是未经测试的,但应该可以让您接近。使用$.grep将在数据数组中搜索与序列匹配的任何对象,并将这些对象返回到匹配数组。因为应该只有一个。您可以只输出第一个匹配响应

$('#standard_response').on('change',function() {
    var seq = $(this).val();
    var matches = $.grep(data, function(e) { return e.sequence == seq });
    if(matches.length > 0){
        $('textarea').text(matches[0].response);
    }
});

因为,下拉列表不完全可见。 我假定类名为“SequenceSelect”,它也用于脚本标记中。 所以,若您要更改select下拉列表的类名,也要更改脚本标记

<select class='SequenceSelect'>
    <option value="1">one</option>
    <option value="2">two</option>
</select>

<div class="ShowSequenceResponse">
    <textarea name="SequenceRespeonse"></textarea>
</div>

<script>
    $('.SequenceSelect').change(function(){
        var SequenceNo= $('.SequenceSelect').val();
        $.ajax({url:"AjaxSequenceSelect.php?SequenceNo="+SequenceNo,cache:false,success:function(result){
            $('#ShowSequenceResponse').html(result);
        }});
    });
</script>
创建一个页面AjaxSequenceSelect.php 这个页面在脚本标签中使用,所以请注意这里

<?php

extract($_GET);

$sql="SELECT * from tickets_standardresponses WHERE sequence='$SequenceNo'";
$rs=mysql_query($sql,$conn);
while($result=mysql_fetch_array($rs))
{
    $Response=$result['response'];
}
?>

<textarea name="SequenceRespeonse"><?echo $Response;?></textarea>

我没有在GET/POST请求中使用AJAX,所以我不认为这是一个可能的重复,我在这里没有看到文本区域。但是您可以只执行$'standard_response'。在'change'上,函数{$'myTextAreaId'。text$this.val;};它不是所选选项的值,而是PHP代码生成的JQuery数组中的数据。如果您不使用ajax,那么您只想在问题中分享生成的HTML的相关部分以及到目前为止的JS。不需要共享PHP,尤其是当我们看不到它与您的问题的相关性时。