0

我的 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>

希望有人看到问题:)

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

搜索字段

这是结果页:

结果页面

谢谢 :)

4

2 回答 2

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();
}

控制器 :

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从控制器传递。

于 2013-03-07T09:49:30.193 回答
1

你得到了所有的结果,因为 $this->input->post('search) 是空的

你必须做这件事之一

在您的视图中更改发布方法:

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

或者,如果想通过获取请求保持表单提交,请将您的控制器更改为此

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

只需进行其中一项更改并提供反馈

于 2013-03-07T11:40:30.333 回答