编码器分页在URI上转义页码


Codeigniter pagination ESCAPE PAGE NUMBER on URI

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

我的搜索表单的想法是,当有$param时,它包含搜索条件,将被分解为搜索参数。

index.php/admin/popup/history/1dps-2A-3ADMIN9

但是当我点击第2页时,uri变成了:

index.php/admin/popup/history/ispager/2

如果我将$param添加为$param2, IT WORKS!

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>

history-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";
    }

在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

我对pager_page函数做了一点修改,添加了一个额外的参数来传递参数,它可以工作。

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";
    }