【发布时间】:2010-12-16 13:01:38
【问题描述】:
我用谷歌搜索并到处搜索,但我找不到关于这个问题的明确答案。
我正在尝试进行网页搜索并对结果进行分页(并按标题对它们进行排序)。
请看原型http://i55.tinypic.com/2dlrqbs.png
如果用户指定搜索条件“a”,我希望显示所有包含“a”的名称。我的问题是如何在导航链接上添加字符串:?name=a.
如果我不发回搜索条件,点击下一页将显示所有记录。
我看了很多关于这个主题的帖子,但我还不明白该怎么做
控制器代码(草案)
function listall( )
{
$limit = 2 ;
$orderby = 'u.id';
$direction = 'asc';
$name = '';
if ( $_POST )
{
$name = $this->input->post('name');
}
if ( $_GET )
{
$name = $this->input->post('name');
if ( $this->input->get('orderby') )
list($orderby, $direction) = explode(':', $this->input->get('orderby'));
}
$view = new view( 'character/listall');
$db = Database::instance();
$sql = "select c.id id, c.lastactiontime, c.name character_name, k.name kingdom_name, k.image kingdom_image, from_unixtime( u.last_login, '%d-%m-%y') last_login, u.nationality
from characters c, kingdoms k, users u
where 1=1 and
c.kingdom_id = k.id and
c.user_id = u.id
" ;
if ( $name != '' )
$sql .= "and c.name like '%" . $name . "%'" ;
$characters = $db->query( $sql );
//$characters = ORM::factory( "character" )->orderby( $orderby, $direction )->find_all();
$this->pagination = new Pagination(array(
'base_url'=>'character/listall',
'uri_segment'=>'listall',
'style'=>'digg',
'query_string' => 'page',
'total_items'=>$characters->count(),
'items_per_page'=>$limit));
//$characters = ORM::factory( "character" )->orderby( $orderby, $direction )->find_all($limit, $this->pagination->sql_offset);
$sql .= " order by $orderby $direction ";
$sql .= " limit $limit offset " . $this->pagination->sql_offset ;
kohana::log('debug', $sql );
$characters = $db->query( $sql );
$playersinfo = Character_Model::getplayersinfo();
$view->playersinfo = $playersinfo;
$view->pagination = $this->pagination;
$view->characters = $characters;
$this->template->content = $view;
}
谢谢
【问题讨论】:
-
您的代码应该可以工作。 AFAIR,分页会自动添加当前查询字符串。
标签: php search navigation kohana