有没有办法显示外键与另一个 table 的主键相关的数据?
Is there a way to display data with foreign key related to the primary key of another table?
我正在制作测验应用后端模块。我正在尝试编辑问题和答案,我怎样才能编辑问题并显示相关问题的答案?
我有两个 table questions
和 answers
table.
问题table结构
id
| question
答案table结构
id
| answer
| question_id
所以 question
table 必须连接到 question_id
才能获取答案。
现在我有这个错误,如果我点击任何我想编辑的问题,即使那个特定的答案与问题无关,也会显示所有答案。
Bug or Problem of the app, please see
此控制器将调用模型
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;
}
}
显示编辑 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');
}
});
}
此代码触发 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>
<div class="card-body">
<form id="myForm">
<input type="hidden" name="answer" id="answer" class="form-control" />
<div id="showEdit"></div>
</form>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" id="btnClose" class="btn btn-default">Close</button>
<button type="button" id="btnSave" class="btn btn-primary">Update</button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div>
显示模态
//edit
$('#showdata').on('click', '.item-edit', function(){
var id = $(this).attr('data');
$('#myModal').modal('show');
$('#myModal').find('.modal-title').text('Edit Question');
$('#myForm').attr('action', '<?php echo base_url() ?>posts/updatePost');
$.ajax({
type: 'ajax',
method: 'get',
url: '<?php echo base_url() ?>posts/editPost',
data: {id: id},
async: false,
dataType: 'json',
success: function(data){
//$('input#question').val(data.question);
$('input#answer').val(data.answer);
},
error: function(){
alert('Could not Edit Data');
}
});
});
替换这2个javascript函数,类型参数在你的$.ajax({type:method_here})
中应该是get
或post
将以下内容添加到您的 ajax success: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> '+
'</form>'+
'</div>'+
'</div><br>';
}
$('#showdata').html(html);
},
error: function(){
alert('Could not get Data from Database');
}
});
}
2。显示特定问题答案的函数
将问题的id发送到controller
以从数据库中获取相关答案。使用 codeigniter 时,无需通过 data
参数发送 id。它允许您将参数作为 url 段传递。
$this->uri->segment(number_here)
可以帮助您实现这一目标。
number_here 将替换为您要获取的实际段数。
您可以从 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;
}
}
我正在制作测验应用后端模块。我正在尝试编辑问题和答案,我怎样才能编辑问题并显示相关问题的答案?
我有两个 table questions
和 answers
table.
问题table结构
id
| question
答案table结构
id
| answer
| question_id
所以 question
table 必须连接到 question_id
才能获取答案。
现在我有这个错误,如果我点击任何我想编辑的问题,即使那个特定的答案与问题无关,也会显示所有答案。
Bug or Problem of the app, please see
此控制器将调用模型
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;
}
}
显示编辑 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');
}
});
}
此代码触发 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>
<div class="card-body">
<form id="myForm">
<input type="hidden" name="answer" id="answer" class="form-control" />
<div id="showEdit"></div>
</form>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" id="btnClose" class="btn btn-default">Close</button>
<button type="button" id="btnSave" class="btn btn-primary">Update</button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div>
显示模态
//edit
$('#showdata').on('click', '.item-edit', function(){
var id = $(this).attr('data');
$('#myModal').modal('show');
$('#myModal').find('.modal-title').text('Edit Question');
$('#myForm').attr('action', '<?php echo base_url() ?>posts/updatePost');
$.ajax({
type: 'ajax',
method: 'get',
url: '<?php echo base_url() ?>posts/editPost',
data: {id: id},
async: false,
dataType: 'json',
success: function(data){
//$('input#question').val(data.question);
$('input#answer').val(data.answer);
},
error: function(){
alert('Could not Edit Data');
}
});
});
替换这2个javascript函数,类型参数在你的$.ajax({type:method_here})
get
或post
将以下内容添加到您的 ajax success: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> '+
'</form>'+
'</div>'+
'</div><br>';
}
$('#showdata').html(html);
},
error: function(){
alert('Could not get Data from Database');
}
});
}
2。显示特定问题答案的函数
将问题的id发送到controller
以从数据库中获取相关答案。使用 codeigniter 时,无需通过 data
参数发送 id。它允许您将参数作为 url 段传递。
$this->uri->segment(number_here)
可以帮助您实现这一目标。
number_here 将替换为您要获取的实际段数。
您可以从 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;
}
}