我想在数据库的视图中显示问题及其各自的答案:
我得到了名为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.
我需要什么更正?我做错了什么?
我们非常感谢您的建议。
尝试以下
您的型号
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-建设者并激活查询生成器(如果您还没有激活的话(。
希望这将帮助您:
您必须添加一个基于questions
表和feedback
表的join
查询,如下所示:
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>
只需在视图中添加一个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>
<?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;
}
?>