请教关于分页的问题——怎么样能够在分页时带上条件

#1 torrey

我是新手,现在在试着用sp改我们的一个网站,遇到一个分页的问题向大家请教。

关键代码如下:
//搜索条件
$id = $this->spArgs('id');
$employee_name = $this->spArgs('employee_name');
$conditions = array('id' => $id, 'employee_name' => $employee_name);
//查询
$employeelist = spClass("employeeInfo");
$this->results = $employeelist->spPager($this->spArgs('page', 1), 1)->findAll($conditions); // 这里使用了spPager,同时用spArgs接受到传入的page参数
$this->pager = $employeelist->spPager()->getPager();  // 这里获取分页数据并发送到smarty模板内

问题描述:
上面的findAll后面的$conditions 是一个搜索条件,简单的就是按条件搜索,并将查到的分页。分页可以做,但是发现下面的页面的跳转链接有问题。没有条件时,跳转是正常的,比如跳到第2页或者第3页都是很正确的结果,但如果有条件了,点击第2页或者第3页的时候,出来的结果就不对了,出来的结果变成不带搜索条件的了。教程里面也没有找到更详细说明,我试着把最后分页的语句改成 $this->pager = $employeelist->spPager()->getPager($conditions ); 也还是一样的,也就是分页的时候会抛弃掉所有的条件。

请问这个问题应该怎么解决呢? 怎么样能够在分页时也带上条件?望指点,小弟在这里先谢了:)

2010-11-14 10:14:37

#2 jake

分页的时候,大概是用以下的方式来做分页页码的链接(Smarty):
下一页
你可以在其间加入自己的条件,使得条件以URL的方式GET过去下一页(页码12345那种同样):
id=$id employee_name=$employee_name}>">下一页

另外,如果employee_name是中文,那么就得注意URL编码的问题,因为IE是的URL编码是默认GBK的。所以要如下处理:
1. 在分页的地方加入URL编码(smarty):
|escape:"url" id=$id}>">下一页
2. 在接收employee_name的时候,要URL解码:
$employee_name = urldecode($this->spArgs('employee_name'));

2010-11-14 11:56:57

#3 torrey

非常感谢!! 很详细哈。我以后坚决支持speedPHP,也会去邀请其他朋友来使用它。

2010-11-14 13:23:03