如何将关键字传递到下一页

#1 bsdos

if (null != $this->spArgs('search')) {
        $searchkey=$this->spArgs('search');
}
$conditions = '(cname like "%'.$searchkey.'%" or ename like "%'.$searchkey.'%") and d_date = 0';
$this->users = $user->spLinker()->spPager($this->spArgs('page', 1), 10)->findAll($conditions);

查找:

我设置的是分页并一页有10条记录,当我要查大于10条的情况时
第一页是正常的,查第二页的时候,因为我点的是链接“2”,导致$searchkey是空的,sql语句发生变化,把所有资料都拿出来了
请问如何解决,谢谢

2010-09-27 09:50:43

#2 jake

上面没有看到你的分页链接是如何构成的。

搜索结果的分页,主要是几个步骤:
1. 首先提交搜索的
最好用GET,而不用POST。(看看各大搜索引擎都如此)。
2. 接收搜索关键字的时候,要urldecode,URL解码,因为在IE浏览器内,中文关键字GET的时候会被自动URL编码,所以接收的时候要解码。
3. 在显示页码的时候,和提交类似,只是把form做成链接:<{spUrl c=main a=index p=$pager.next_page search=$searchkey|escape:"url"}>
说白了就是在URL地址上面带上关键字。search=$searchkey|escape:"url"
|escape:"url"是smarty模板的函数,作用是URL编码,因为URL地址中的search需要进行一次URL编码,以防止出现分号等问题。
4. 还是原来的接收即可。

具体可以看看各个搜索引擎的做法,都可以看出他们在页码上面带关键字的。

PS: 提问类帖子最好发到 求助问答 区,谢谢~~~本贴将转移

2010-09-27 10:30:54