Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.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 是否有方法显示外键与另一个表的主键相关的数据?_Php_Codeigniter_Join_Codeigniter 3 - Fatal编程技术网

Php 是否有方法显示外键与另一个表的主键相关的数据?

Php 是否有方法显示外键与另一个表的主键相关的数据?,php,codeigniter,join,codeigniter-3,Php,Codeigniter,Join,Codeigniter 3,我正在制作一个测验应用程序后端模块。我正在尝试编辑问题和答案,如何编辑问题和相关问题的答案 我有两张表格问题和答案表格 问题表结构 id|问题 var html = ''; for(var i=0; i<data.length; i++){ html +='<input type="text" value="'+data[i].answer+'" class="form-control" /><hr>'; } $('#showEdit').html(html

我正在制作一个测验应用程序后端模块。我正在尝试编辑问题和答案,如何编辑问题和相关问题的答案

我有两张表格
问题
答案
表格

问题表结构

id
|
问题

var html = '';
for(var i=0; i<data.length; i++){
    html +='<input type="text" value="'+data[i].answer+'" class="form-control" /><hr>';
}
$('#showEdit').html(html);
答案表结构

id
|
答案
|
问题_id

所以
question
表必须连接到
question\u id
才能获取它的答案

现在我有一个错误,如果我点击任何我想编辑的问题,就会显示所有的答案,即使这个特定的答案与问题无关

此控制器将调用模型

public function editPost(){
    $result = $this->post_model->showEditPost();
    echo json_encode($result);
}
此模型查询它以显示数据

public function showEditPost(){
    // Show answers
    $id = $this->input->get('id');

    $this->db->select('*');
    $this->db->from('answers');
    $this->db->join('questions', 'answers.question_id = questions.id');
    $this->db->where('questions.id', $id);
    $query = $this->db->get();
    if($query->num_rows() > 0){
        return $query->result();
    }else{
        return false;
    }
}
Show Edit Post函数ajax脚本-此脚本显示模式数据

function showEditPost(){
    $.ajax({
        type: 'ajax',
        url: '<?php echo base_url() ?>posts/editPost',
        async: false,
        dataType: 'json',
        success: function(data){
            var html = '';
            var i;

        for(i=0; i<data.length; i++){
                html +='<input type="text" value="'+data[i].answer+'" class="form-control" /><hr>';
                }

                $('#showEdit').html(html);
            },
            error: function(){
                alert('Could not get Data from Database');
            }
        });
}
函数showEditPost(){
$.ajax({
键入:“ajax”,
url:“posts/editPost”,
async:false,
数据类型:“json”,
成功:功能(数据){
var html='';
var i;
对于(i=0;i

替换这两个javascript函数,类型参数应该是
$中的
get
post
。ajax({type:method\u here})

将以下内容添加到ajax
success:function()

获取控制器中的id,而不是模型中的id

public function editPost(){
    $id = $this->uri->segment(3) //if you don't know about uri->segment learn from user_guide
    $result = $this->post_model->showEditPost($id);
    echo json_encode($result);
}
你的模型应该是

public function showEditPost($id){
    // Show answers
    $this->db->select('*');
    $this->db->from('answers');
    $this->db->join('questions', 'answers.question_id = questions.id');
    $this->db->where('questions.id', $id);
    $query = $this->db->get();
    if($query->num_rows() > 0){
        return $query->result();
    }else{
        return false;
    }
}

where
中发布,它应该像
$this->db->where('questions.id',$id);
。您只提到了字段名而没有提到where value。@HP371-您好,这是我的问题。您能帮助我如何获取该id的值吗?如果我将其重新计算为硬编码的1,则输出是正确的。我还尝试使用隐藏的输入类型值1,但仍然没有显示任何数据您可以在Ajax数据中传递id,因此@HP371您好,先生,可以吗你也可以参考我的代码?或者发布我的代码的任何修改?真的尽我最大的努力来解决这个问题仍然没有运气在php或CI中的ajax中搜索通行证编辑id有很多解决方案。谷歌,它在你这边行得通吗,先生?仍然没有在我这边显示数据。谢谢你的回答。我不会更改脚本函数<代码>showEditPost()
?您可以使用它们,我刚刚修改了相关代码。谢谢,那么我是否有可能显示答案的数据?仍然无法获取。请检查控制台以获取输出。您得到了什么?
function showAllQuestions(){
    $.ajax({
        type: 'post',
        url: '<?php echo base_url() ?>posts/showPosts',
        async: false,
        dataType: 'json',
        success: function(data){
            var html = '';
            var i;
            var n=1;

            for(i=0; i<data.length; i++){
                html +='<div class="card">'+
                    '<div class="card-header" style="color:white; background-color:black">'+
                        '<h4>Question</h4>'+
                    '</div>'+
                    '<div class="card-body">'+
                        '<form>'+
                            '<div class="form-group">'+
                                '<label for="exampleFormControlTextarea1"><h5> Question: </h5></label>'+
                                '<textarea class="form-control" name="question" id="question" rows="8">'+data[i].question+'</textarea>'+
                            '</div>'+
                            '<hr>'+
                            '<a href="javascript:;" class="btn btn-info item-edit" data-id="'+data[i].id+'">Edit </a>&nbsp;'+
                        '</form>'+
                    '</div>'+
                '</div><br>';
            }

            $('#showdata').html(html);
        },
        error: function(){
            alert('Could not get Data from Database');
        }
    });
}
//edit
$('#showdata').on('click', '.item-edit', function(){
    var id = $(this).data('id');

    $('#myModal').modal('show');
    $('#myModal').find('.modal-title').text('Edit Question');
    $('#myForm').attr('action', '<?php echo base_url() ?>posts/updatePost');
    $.ajax({
        type: 'POST',
        url: '<?php echo base_url() ?>posts/editPost/' + id,
        async: false,
        dataType: 'json',
        success: function(data){
            console.log(data);
            var html = '';
            for(var i=0; i<data.length; i++){
                html +='<input type="text" value="'+data[i].answer+'" class="form-control" /><hr>';
            }
            $('#showEdit').html(html);
        },
        error: function(){
            alert('Could not Edit Data');
        }
    });
});
public function editPost(){
    $id = $this->uri->segment(3) //if you don't know about uri->segment learn from user_guide
    $result = $this->post_model->showEditPost($id);
    echo json_encode($result);
}
public function showEditPost($id){
    // Show answers
    $this->db->select('*');
    $this->db->from('answers');
    $this->db->join('questions', 'answers.question_id = questions.id');
    $this->db->where('questions.id', $id);
    $query = $this->db->get();
    if($query->num_rows() > 0){
        return $query->result();
    }else{
        return false;
    }
}