Php 如何在我的searchpage中获得分页-codeigniter

Php 如何在我的searchpage中获得分页-codeigniter,php,mysql,codeigniter,search,pagination,Php,Mysql,Codeigniter,Search,Pagination,我的网站主页上有一个搜索栏。当我搜索公司并单击“搜索”时,它会重定向到一个页面。(注意:我删除了带有url路由的控制器名称“home”) 我的url中没有任何搜索词或搜索结果。它只是一个干净的url 当我尝试在该页面中实现分页时,它不起作用,因为当我转到下一页时,searchterm消失了,它显示了我数据库中的所有公司 如何将分页添加到此页面 我的控制器: function searchresults() { $this->breadcrumbs-&g

我的网站主页上有一个搜索栏。当我搜索公司并单击“搜索”时,它会重定向到一个页面。(注意:我删除了带有url路由的控制器名称“home”)

我的url中没有任何搜索词或搜索结果。它只是一个干净的url

当我尝试在该页面中实现分页时,它不起作用,因为当我转到下一页时,searchterm消失了,它显示了我数据库中的所有公司

如何将分页添加到此页面

我的控制器:

    function searchresults()
    {   
        $this->breadcrumbs->page = array('link'=> base_url().'home/search' ,'title' => 'Bedrijven Zoeken' );            
        $this->breadcrumbs->method = array('link'=> base_url().'home/searchresults' ,'title' => 'Zoekresultaten' );
        $data['breadcrumbs'] = $this->breadcrumbs->get();
        $match = $this->input->post('search');
        if(strlen($this->input->post('cookie')) > 0){ $match2 = $this->input->post('cookie'); } else{ $match2 = '9101'; }
        $data['query'] = $this->bedrijven_model->get_search($match, $match2);

        $this->load->view('views/header');
        $this->load->view('views/searchresults', $data);
        $this->load->view('views/footer');
        $data['query'] = $this->bedrijven_model->bedrijven_tags();
    }
我的模型:

function get_search($match, $match2)
{
    if (!isset($_COOKIE['cookie'])) {

        $query = "SELECT * FROM (`bedrijfcategorieen`) 
        JOIN `bedrijven` ON `bedrijfcategorieen`.`idbedrijven` = `bedrijven`.`idbedrijven` 
        JOIN `categorieen` ON `bedrijfcategorieen`.`idcategorieen` = `categorieen`.`idcategorieen` 
        WHERE (`Bedrijfsnaam` LIKE '%".$this->input->post('search')."%' 
        OR `Plaats` LIKE '%".$this->input->post('search')."%' 
        OR `Telefoonnummer` LIKE '%".$this->input->post('search')."%' 
        OR `Email` LIKE '%".$this->input->post('search')."%' 
        OR `Website` LIKE '%".$this->input->post('search')."%' 
        OR `Profiel` LIKE '%".$this->input->post('search')."%' 
        OR `Adres` LIKE '%".$this->input->post('search')."%' 
        OR `Categorie` LIKE '%".$this->input->post('search')."%') 
        AND (Postcode LIKE '%".$this->input->post('cookie')."%')

        GROUP BY `bedrijfcategorieen`.`idbedrijven`";
        $result = $this->db->query($query);

        return $result->result();
}
我的搜索页面:

<form name="input" action="searchresults" method="post">
<input type="search" onchange="validate()" placeholder="Zoeken..." name="search" size="70">
<input type="search" onchange="validate()" required="true" size="14" placeholder="Postcode..." name="cookie" value="<?= $this->input->cookie('postcode', TRUE); ?>" >

<input type="submit" value="Zoeken">

</form>
但它没有起作用


我希望清楚我想要什么。

据我所知,codeigniter有一个分页类,对于任何类型的分页都非常有用

我可以看到您已经添加了配置参数,但没有初始化分页。您甚至还没有加载分页库。请按照以下步骤加载并初始化库

我在我的现场网站上使用过,效果很好。你可以自己在那里搜索和查看

我希望这能回答你的问题


关于。

正如@openrijal提到的,您似乎没有正确初始化分页库。 我会首先尝试并遵循一个简单的例子,例如…只是为了确保您可以通过您的记录分页

我认为最主要的一点是,您没有向您的模型发送限制和当前页面来限制返回的结果,您只是通过了match1/match2。查看教程,看看这个家伙模型中的“fetch_countries”函数


一旦您对所有结果进行了简单的分页,然后将搜索词附加到分页链接,这样您也可以将其传递到模型(添加另一个参数)以进一步限制搜索结果

这就是我不喜欢codeigniter的原因之一。它承诺给予一切,但当一点点复杂情况出现时,它就失败了

尽管如此,这是一个肮脏的处理方式

首先,您需要从
GET
变量构建查询字符串。但在此之前,您需要取消设置
$\u GET['page']
变量。(CI自动添加它)

因此,代码变成

if(isset($_GET['page']))unset($_GET['page']);
现在使用其余的搜索标准构建查询

$q = http_build_query($_GET);
现在将基本url更改为以下内容:

$config['base_url'] = 'http://kees.een-site-bouwen.nl/home/searchresults?'.$q
就这样


更新
在这里,您只能自动加载库。不是配置。你需要在方法中设置它。

我昨天解决了这个问题。这是一个地狱般的任务,让它的工作。 两个人帮我聊天,这样我们就可以在没有太多评论的情况下尝试一些东西

请参见此处的解决方案:

还有这个问题:


我确实在autoload.php中加载了库。我将把这一点补充到我的问题中。我还添加了$this->pagination->initialize,但我只是添加了我尝试过的选项。这根本不能回答我的问题。在您的模型中,尝试将
$this->input->post('search')
替换为
$match
。您已将
$this->input->post('search')
分配给控制器中的
$match
。“search”是我的搜索框的名称。没有它我就无法搜索。是的。您已经将其值分配给控制器中的
$match
变量<代码>$match=$this->input->post('search')然后调用模型
$this->bedrijven\u model->get\u search($match,$match2)。在型号中的
函数get\u search($match,$match2)
中,$match值将包含您的
搜索输入值
。您还可以使用
$this->input->post('search')
在您的模型中,但MVC的整个概念将毫无意义。这就是我不喜欢codeigniter的原因之一。它承诺给予一切,但当一点点复杂的事情出现时,它就失败了。无论如何谢谢,我会试试这个:)没法用了。我知道普通记录的分页方式。但它只是不适用于我的搜索页面,因为它会在我点击第2页时删除我的搜索词。发布处理搜索的方法。你需要在那里添加上面的代码。我在问题中发布了方法。或者我遗漏了什么。更新。需要注意的是,每次方法被撤销时都需要传递查询字符串。所以分页代码必须放在方法内部。
$q = http_build_query($_GET);
$config['base_url'] = 'http://kees.een-site-bouwen.nl/home/searchresults?'.$q
function searchresults()
    {   
        $this->breadcrumbs->page = array('link'=> base_url().'home/search' ,'title' => 'Bedrijven Zoeken' );            
        $this->breadcrumbs->method = array('link'=> base_url().'home/searchresults' ,'title' => 'Zoekresultaten' );
        $data['breadcrumbs'] = $this->breadcrumbs->get();
        $match = $this->input->post('search');
        if(strlen($this->input->post('cookie')) > 0){ $match2 = $this->input->post('cookie'); } else{ $match2 = '9101'; }
        $data['query'] = $this->bedrijven_model->get_search($match, $match2);


        /*--- here comes the part --*/

       if(isset($_GET['page']))unset($_GET['page']);
       $q = http_build_query($_GET);

      // Rest pagination code as shown in CI docs.

        $this->load->view('views/header');
        $this->load->view('views/searchresults', $data);
        $this->load->view('views/footer');
        $data['query'] = $this->bedrijven_model->bedrijven_tags();
    }