我收到了这个搜索表单。 在我的搜索表单上有分页功能,每页调用数据。 如果它是原始查询,我从一个页面移动到另一个页面没有问题 但问题在于我根据标准进行搜索。当我从第一页移动到第二页时,第二页直接加载原始查询结果,没有搜索标准。
我的搜索表单的想法是$param
,它包含将被分解为搜索参数的搜索条件。
index.php/admin/popup/history/1dps-2A-3ADMIN9
但是当我点击第2页时,uri就变成了这个:
index.php/admin/popup/history/ispager/2
如果我将$param
添加为$param2
,那就是IT工作!
index.php/admin/popup/history/ispager/2/1dps-2A-3ADMIN9
问题: 如何逃避页码? 有点像:
<?php $this->mylib->pager_page(site_url("admin/popup/history/ispager/?/$param"), "table_list", "preloader"); ?>
所以无论页码是什么,它仍然可以使用
index.php/admin/popup/history/ispager/3/1dps-2A-3ADMIN9
history.php
<?php
//INIT
$pager=(isset($pager)) ? $pager : "1";
?>
<div id="table_list">
<?php $this->load->view("admin/history-list"); ?>
</div>
历史-list.php的
$arr=(isset($param)) ? explode("-", $param) : array();
//var_dump($arr);
$search="";$search2="";$search3=""
for($i=0;$i<count($arr);$i++){
$z = substr($arr[$i],0,1);
$y= substr($arr[$i],1);
switch($z){
case "1":
$search1 = "AND b.user_name LIKE'".$y."%'"; break;
case "2":
$search2 = "AND c.admin_name LIKE'".$y."%'"; break;
case "3":
$search3 = "AND ".$ltable."_bank LIKE'".$y."%'"; break;
default:
break;
}
}
$s="SELECT * FROM
($table a INNER JOIN user b ON (a.".$ltable."_user_id=b.user_id))
LEFT JOIN admin c ON (a.".$ltable."_admin_id=c.admin_id)
WHERE a.".$ltable."_id<>'' $search1 $search2 $search3 ORDER BY a.".$ltable."_id DESC";
$this->mylib->pager_init($s, 1, $pager);
$q=$this->db->query($this->mylib->pager["dataQuery"]);
<table content>
在搜索表单页面的底部:
Page: <?php $this->mylib->pager_page(site_url("admin/popup/history/ispager"), "table_list", "preloader"); ?>
图书馆:mylib.php
public function pager_page($page="", $obj="", $loader=""){
print "\n";
if(($this->pager["page"]>6) && $this->pager["pagenum"]>6){
print "<span class=\"pager\"><a href=\"$page/1\"><<</a></span>\n";
}
for($pageId=1; $pageId<=$this->pager["pagenum"]; $pageId++){
if((($this->pager["pagenum"]-5)>0) && ($pageId>($this->pager["page"]-6)) && ($pageId<($this->pager["page"]+6)) || $this->pager["pagenum"]<6){
if($pageId != $this->pager["page"]){
print "<span class=\"pager\"><a href=\"$page/$pageId\">$pageId</a></span>\n";
}else{
print "<span class=\"pager_sel\">$pageId</span>\n";
}
}
}
if(($this->pager["page"]!=$this->pager["pagenum"]) && $this->pager["pagenum"]>6){
print "<span class=\"pager\"><a href=\"$page/".((int)$this->pager["pagenum"])."\">>></a></span>\n";
}
print "\n";
}
答案 0 :(得分:0)
在Codeigniter中,您可以使用$this->uri->segment(n);
// n = 1表示控制器,n = 2表示方法等
这使您可以从URI字符串中检索信息
请考虑此示例http://example.com/index.php/controller/action/1stsegment/2ndsegment
它会返回
$this->uri->segment(1); // controller
$this->uri->segment(2); // action
$this->uri->segment(3); // 1stsegment
$this->uri->segment(4); // 2ndsegment
答案 1 :(得分:0)
我对pager_page函数进行了一些修改,添加了一个额外的参数来传递param并且它有效。
history.php
$paramABC= $param;
if ($param =="ispager"){
$paramABC= $param2;
$arr=explode("-",$param2);
}
history-list.php
Page: <?php $this->mylib->pager_page(site_url("admin/popup/history/ispager"), "table_list", "preloader",$paramABC); ?>
mylib.php
public function pager_page($page="", $obj="", $loader="",$param2=""){
print "\n";
if(($this->pager["page"]>6) && $this->pager["pagenum"]>6){
print "<span class=\"pager\"><a href=\"$page/1/$param2\"><<</a></span>\n";
}
for($pageId=1; $pageId<=$this->pager["pagenum"]; $pageId++){
if((($this->pager["pagenum"]-5)>0) && ($pageId>($this->pager["page"]-6)) && ($pageId<($this->pager["page"]+6)) || $this->pager["pagenum"]<6){
if($pageId != $this->pager["page"]){
print "<span class=\"pager\"><a href=\"$page/$pageId/$param2\">$pageId</a></span>\n";
}else{
print "<span class=\"pager_sel\">$pageId</span>\n";
}
}
}
if(($this->pager["page"]!=$this->pager["pagenum"]) && $this->pager["pagenum"]>6){
print "<span class=\"pager\"><a href=\"$page/".((int)$this->pager["pagenum"])."/$param2\">>></a></span>\n";
}
print "\n";
}