Codeigniter分页对URI的ESCAPE PAGE NUMBER

时间:2014-06-09 04:50:06

标签: javascript php jquery mysql codeigniter

我收到了这个搜索表单。 在我的搜索表单上有分页功能,每页调用数据。 如果它是原始查询,我从一个页面移动到另一个页面没有问题 但问题在于我根据标准进行搜索。当我从第一页移动到第二页时,第二页直接加载原始查询结果,没有搜索标准。

我的搜索表单的想法是$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\">&lt;&lt;</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"])."\">&gt;&gt;</a></span>\n";
        }
        print "\n";
    }

2 个答案:

答案 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\">&lt;&lt;</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\">&gt;&gt;</a></span>\n";
        }
        print "\n";
    }