如何通过在codeigniter中选择搜索类别来从db中搜索记录?

时间:2014-05-31 10:42:02

标签: php mysql codeigniter codeigniter-2

我的索引页面中有记录列表。现在我想通过选择类别(例如电话号码,电子邮件等)搜索特定的记录/记录。我该怎么做?帮助..

以下是我的观点:

    <?php
        $attributes = array('class'=>'searchform', 'id'=>'searchform');
        echo form_open('crud/searchCrud', $attributes);?>
        <div class="formelements">
            <div class="formlbl">
                Search:
            </div>
            <div class="forminput">
                <input type="text" name="searchon" id ="searchon"/>
            </div>
            <div class="searchtyp">
                <select class="searchby" name="searchby">
                    <option value="0">---Select--- </option>
                    <option value="name">Name</option>
                    <option value="email">Email</option>
                    <option value="phone">Phone</option>
                </select>
            </div>
            <div class="searchinput">
                <input type="submit" name="search" value="Search" />
            </div>
        </div>          
        <?php echo form_close();?>

这是我的控制器:

    public function searchCrud()
    {
        $records =  $this->crud_mdl->searchCrud();
        foreach ($records as $record) {
            echo $record->name;
        }
    }

这是我的模特:

    public function searchCrud()
    {
        $searchby = $this->input->post('searchby');
        $searchon = $this->input->post('searchon');

        $this->db->get('test')->result();
        return $this->db->like($searchon, $searchby);
    }

1 个答案:

答案 0 :(得分:2)

1)您绝不应直接在 POST 中访问 Model 数据。
2)始终在 Controller 中收集它们,然后将其传递给 Model
3)还要始终尝试创建 Model 功能, re-usable

稍微修改了你的代码。尝试运行它。


控制器:

public function searchCrud()
{
    $searchby = $this->input->post('searchby');
    $searchon = $this->input->post('searchon');

    $records =  $this->crud_mdl->searchCrud($searchby, $searchon);
    foreach ($records as $record) 
    {
        echo $record->name;
    }
}


型号:

public function searchCrud($searchby, $searchon)
{
    $this->db->like($searchon, $searchby);
    $query = $this->db->get('test');

    if($query->num_rows() > 0)
         return $query->result();
    else
         return FALSE;
}