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