在codeigniter中搜索某些条件

时间:2015-07-08 13:05:07

标签: php codeigniter search

我有一个使用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 ?>

1 个答案:

答案 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 } ?>