为了账号安全,请及时绑定邮箱和手机立即绑定

有没有办法显示与另一个表的主键相关的外键数据?

有没有办法显示与另一个表的主键相关的外键数据?

PHP
手掌心 2022-10-28 16:11:11
我正在制作一个测验应用程序后端模块。我正在尝试编辑问题和答案,如何编辑问题并且该相关问题的答案将显示?我有两张桌子questions和answers一张桌子。问题表结构id|question答案表结构id| answer|question_id所以question必须连接表才能question_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 function ajax script - 这个脚本显示模态数据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');            }        });}此代码触发 Ajax<div class="modal fade-scale" id="myModal" tabindex="-1" role="dialog">   <div class="modal-dialog" role="document">     <div class="modal-content">       <div class="modal-header">         <h4 class="modal-title">Modal title</h4>       </div>       <div class="modal-body">       <div class="card">            <div class="card-header">                <h4>Update Answers</h4>            </div>
查看完整描述

1 回答

?
BIG阳

TA贡献1859条经验 获得超6个赞

替换这 2 个 javascript 函数,类型参数应该是get或post在你的$.ajax({type:method_here})


将以下内容添加到您的 ajaxsuccess:function()


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);

1. 函数 ShowAllQuestions


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');

        }

    });

}

2.显示特定问题答案的功能


将问题的 id 发送到controller以从数据库中获取相关答案。data使用codeigniter时不需要通过参数发送id 。它允许您将参数作为 url 段传递。


$this->uri->segment(number_here)可以帮助您实现这一目标。number_here 将替换为您想要获得的实际段数。


uri->segment你可以从这里了解更多


//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');

        }

    });

});

获取控制器内部的 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;

    }

}


查看完整回答
反对 回复 2022-10-28
  • 1 回答
  • 0 关注
  • 77 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信