我有一个使用codeigniter的网络项目。 我在项目中搜索时遇到问题。我必须显示搜索页面的多个结果与一些关键字。 这是我的模型
function find_user($like){
$this->db->from('user');
$this->db->like('name', $like,'after');
$result =$this->db->get();
return $result->result_array();
}
在我的用户表中,包括
id | name | place_code
在用户表中,列place_code
用于显示用户的位置
这是我的控制器
function search(){
$query = $this->input->post('query_cari');
$find = $this->m_user->find_user($query);
foreach ($find as $key) {
$code = $key['place_code'];
if ($code == '1') {
$place = 'Secretray';
}elseif($code == '2'){
$place = 'OB';
}elseif($code == '3'){
$place ='Manager';
}
}
$data['result'] = $find;
$data['place'] = $place;
$this->load->view('home/search',$data);
}
这是我的控制器代码,包含一个logic
,用于获取办公室用户的位置。但问题是,当我得到1
结果时,place
是正确的。但如果我得到的结果超过1,则place
出错了,只显示所有结果的place
是搜索中最后一个结果的place
。
我想要的是,所有结果都显示了他们自己的place
。
这是我的视图
<?php foreach ($find as $key: ?>
<table>
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Place</th>
</tr>
</thead>
<tbody>
<tr>
<td><?php echo $key['id'] ?></td>
<td><?php echo $key['name'] ?></td>
<td><?php echo $place ?></td>
</tr>
</tbody>
</table>
<?php endforeach ?>
答案 0 :(得分:2)
由于你的逻辑不正确,你总是得到最后的位置是正常的。首先,您的模型中存在错误。其次,您可以改进模型代码:
function find_user($like)
{
$this->db->like('name', $like, 'after');
return $this->db->get('user')->result();
}
现在,您需要在控制器中根据place
的值更改变量place_code
。您可以实时向stdClass()
添加新密钥(或更改现有密钥),如下所示:
foreach($find as $i => $result)
{
// By default, we assume the 'place_code' is equal to '1'
$find[$i]->place = 'Secretray';
if($result->place_code == '2')
$find[$i]->place = 'OB';
else
$find[$i]->place = 'Manager';
}
$data['find'] = $find;
$this->load->view('home/search', $data);
最后,在您看来:
<?php foreach ($find as $result){ ?>
<table>
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Place</th>
</tr>
</thead>
<tbody>
<tr>
<td><?php echo $result->id; ?></td>
<td><?php echo $result->name; ?></td>
<td><?php echo $result->place; ?></td>
</tr>
</tbody>
</table>
<?php } ?>