我想在数据库的视图中显示问题及其相应的答案:
我以以下形式获得了名为 Feedback 的数据库表:
这是我的表格名称:反馈
id | employee_id | question_id | answer |
______________________________________________________
1 | 100 | 1 | That was awesome.
2 | 100 | 2 | That was excellent.
3 | 100 | 3 | That was good.
4 | 101 | 1 | That was better.
5 | 101 | 2 | That was interesting.
6 | 101 | 3 | That was fine.
另一个名为问题的表:
id | Question |
_______________________________________________
1 | How was your day?
2 | How was the task?
3 | How was the Project?
这是我模型的代码:
function get_answers_supervisee () {
$userid = $this->session->userdata('userid');
$result = array ();
$sql = "select answer from Feedback where employee_id = '$userid'";
$query = $this->db->query ( $sql );
foreach ( $query->result_array () as $row ) {
array_push ( $result, $row );
}
return $result;
}
下面是我的表单(客户端视图):
<table class="table">
<?php foreach($form_data_supervisee as $question) {?>
<tr>
<td>
<?php echo $question['ID'].". ".$question['DESCRIPTION']?>
</td>
</tr>
<?php foreach($form_answers_supervisee as $answer) {?>
<tr>
<td>
<textarea rows="5" name="<?php echo $answer['ANSWER']?></textarea>
</td>
</tr>
<?php } ?>
<?php }?>
</table>
这是我的控制器的一部分:
$data['form_answers_supervisee'] = $this->appraisal_model->get_answers_supervisee();
$data['form_answers_supervisor'] = $this->appraisal_model->get_answers_supervisor();
$this->load->view('main_form',$data);
现在我得到具有 employee_id:100
的员工的以下输出1. How was your day?
That was awesome.
That was excellent.
That was good.
2. How was the task?
That was awesome.
That was excellent.
That was good.
3. How was the Project?
That was awesome.
That was excellent.
That was good.
所需的输出应为:
1. How was your day?
That was awesome.
2. How was the task?
That was excellent.
3. How was the Project?
That was good.
这里我需要什么更正?我在做什么错了?
建议受到高度赞赏。
答案 0 :(得分:2)
尝试以下
您的模型
function get_answers_supervisee ()
{
$userid = $this->session->userdata('userid');
$query = $this->db
->select('f.*, q.id AS question_id, q.Question')
->from('Feedback f')
->join('Questions q', 'f.question_id = q.id', 'left')
->where('employee_id', $userid)
->get();
return $query->result();
}
控制器应保持不变。
您的视图
<table class="table">
<?php
foreach($form_data_supervisee as $question) {
?>
<tr>
<td>
<p><?php echo $question->question_id.". ".$question->Question; ?></p>
<p>Answer: <?php echo $question->answer; ?></p>
</td>
</tr>
<?php
}
?>
</table>
作为补充说明:
您的查询对SQL注入完全开放-您 确实应该将内置QueryBuilder用于这些目的和用于 你自己的好处。
在这里看看 https://www.codeigniter.com/userguide3/database/configuration.html#query-builder 并激活查询构建器(如果您还没有的话)。
答案 1 :(得分:1)
只需在您的视图中添加一个if语句即可根据问题输出答案。
<table class="table">
<?php foreach($form_data_supervisee as $question) {?>
<tr>
<td>
<?php echo $question['ID'].". ".$question['DESCRIPTION']?>
</td>
</tr>
<?php foreach($form_answers_supervisee as $answer) {?>
<tr>
<!-- check "id" in "questions" table matches the "question_id" in "feedback" table -->
<?php if($question['ID'] == $answer['question_id']){ ?>
<td>
<textarea rows="5" name="<?php echo $answer['ANSWER']?></textarea>
</td>
<?php } ?>
</tr>
<?php } ?>
<?php }?>
</table>
答案 2 :(得分:1)
希望这对您有帮助:
您必须基于join
表和questions
表添加一个feedback
查询,如下所示:
function get_answers_supervisee ()
{
$employee_id = $this->session->userdata('userid');
$this->db->select('q.id , q.question,f.answer ,f.employee_id');
$this->db->from('questions q');
$this->db->join('feedback f','f.question_id = q.id');
$this->db->where('f.employee_id', $employee_id);
$result = $this->db->get()->result();
return $result;
//print_r($result);
}
输出类似于:
id question answer employee_id
1 How was your day? That was awesome. 100
2 How was the task? That was excellent. 100
3 How was the Project? That was good. 100
您的view
访问表列如下:
<table class="table">
<?php foreach($form_data_supervisee as $item) {?>
<tr>
<td>
<?php echo $item->id;?>
</td>
<td>
<?php echo $item->quesion;?>
</td>
<td>
<?php echo $item->answer;?>
</td>
</tr>
<?php }?>
</table>
答案 3 :(得分:0)
您好,您的查询必须基于question_id
<?php
function get_answers_supervisee ($question_id) {
$userid = $this->session->userdata('userid');
$result = array ();
$sql = "select answer from Feedback where employee_id = '$userid' AND question_id = '$question_id' LIMIT 1";
$query = $this->db->query ( $sql );
foreach ( $query->result_array () as $row ) {
array_push ( $result, $row );
}
return $result;
}
?>