大家好我正在研究一个小的初学者项目,目前我正在研究HTML表格中的两个单独的表格数据,但是我遇到了一些数据问题。有一个凭证表和一个答案表,用户首先输入其凭据然后按下按钮获取存储凭据的表格,并将用户重定向到问题页面,在那里他选择一个多项选择问题,用户选择是保存到表格中。然后,所有这些数据都显示在网页上,但是当显示数据时,每个输入其详细信息的用户都会得到重复的答案。谁能告诉我哪里出错了? tnx提前为您提供帮助。
查看
<table border="1">
<tr>
<th>Name</th>
<th>Second Name</th>
<th>Phone</th>
<th>Email</th>
<th>Answer</th>
<th>Comment</th>
</tr>
<?php foreach ($query as $row): ?>
<tr>
<td><?php echo $row->name; ?></td>
<td><?php echo $row->second_name; ?></td>
<td><?php echo $row->phone; ?></td>
<td><?php echo $row->email; ?></td>
<td> <?php echo $row->answerA;?>
<?php echo $row->answerB;?>
<?php echo $row->answerC;?></td>
<td><?php echo $row->comment;?><br></td>
</tr>
<?php endforeach; ?>
</table>
控制器
function getall(){
$this->load->model('result_model');
$data['query'] = $this->result_model->result_getall();
$this->load->view('result_view', $data);
}
模型
function result_getall(){
return $this->db->select('tblanswers.*,credentials.*')
->from('tblanswers, credentials')
->get()
->result_object();
}
答案 0 :(得分:4)
您正在从tblanswers,凭据中选择所有内容,而无需加入任何列。您最终会得到一个交叉连接,它将每一行与另一个表中的每一行配对。您需要指定tblanswers中哪些行与凭据中的哪些行相关。例如。如果凭证中有id列,则需要在tblanswers中创建credentials_id列并输入数据以使它们匹配。你的getall()应该是这样的:
function result_getall(){
return $this->db->select('tblanswers.*,credentials.*')
->from('tblanswers')
->join('credentials', 'tblanswers.credentials_id = credentials.id')
->get()
->result_object();
}
说
的行join('credentials', 'tblanswers.credentials_id = credentials.id')
指定两个表的关系。
假设琼斯先生输入了他的凭证,他们在身份证表中连续保存了一行,ID为72.然后他输入了答案。您需要确保在保存时,在答案表的credentials_id列中输入“72”。这表明这些答案属于琼斯先生。当您使用上面指定的联接运行查询时,它将返回琼斯先生的凭据以对抗琼斯先生的答案。