搜索显示所有工厂,而不是我搜索的工厂

时间:2013-03-07 09:46:00

标签: php html codeigniter search

我的CodeIgniter应用程序中有一个搜索功能,但它不能正常工作,我不知道是什么问题因为我对CodeIgniter还不熟悉。

我的模特功能:

function get_search()
{
    $match = $this->input->post('search');
    $this->db->like('Bedrijfsnaam', $match);
    $this->db->or_like('Website', $match);
    $this->db->or_like('Email', $match);
    $query = $this->db->get('bedrijven');

    return $query->result();
}

我的控制器功能

function search()
{
    $this->load->view('header');
    $this->load->view('search');
    $this->load->view('footer');
}

function searchresults()
{
    $this->load->model('Bedrijven_model');
    $data['query'] = $this->Bedrijven_model->get_search();
    $this->load->view('header');
    $this->load->view('searchresults', $data);
    $this->load->view('footer');
}

第一个函数仅用于输入字段。第二个是结果。

我的观点:

我的搜索字段视图:

<div id="bigcontent">
<h2>Bedrijven zoeken</h3>

<form name="input" action="searchresults" method="get">
<input type="search" name="search" id="search">
<input type="submit" value="Zoeken">
</form>

我的结果页面:

<div id="bigcontent">
<table>
<tr><th>Bedrijf</th><th>Website</th><th>email</th></tr>
<?php foreach($query as $item):?>
<tr>
<td><?= $item->Bedrijfsnaam ?></td>
<td><?= $item->Website ?></td>
<td><?= $item->Email ?></td>
</tr>
<?php endforeach;?>
</table>
</div>

希望有人看到问题:)

一些截图来澄清我的意思: 这是搜索字段:

the search field

这是结果页:

results page

谢谢:)

2 个答案:

答案 0 :(得分:1)

您无法将值发布到模型。而不是发布,将其作为控制器本身的参数传递。

模特:

function get_search($match)
{
    $this->db->like('Bedrijfsnaam', $match);
    $this->db->or_like('Website', $match);
    $this->db->or_like('Email', $match);
    $query = $this->db->get('bedrijven');

    return $query->result();
}

CONTROLLER:

function search()
    {
        $this->load->view('header');
        $this->load->view('search');
        $this->load->view('footer');
    }

    function searchresults()
    {
        $match = $this->input->post('search');
        $this->load->model('Bedrijven_model');
        $data['query'] = $this->Bedrijven_model->get_search($match);
        $this->load->view('header');
        $this->load->view('searchresults', $data);
        $this->load->view('footer');
    }

从控制器传递$match

答案 1 :(得分:1)

您获得了所有结果,因为$ this-&gt; input-&gt; post('search)为空

你必须做其中一件事

在您的观点上,将方法更改为发布:

<form name="input" action="searchresults" method="post">

或者,如果希望保持表单提交请求,请将控制器更改为

$match = $this->input->get('search');

只需执行一次此更改并提供反馈