TP中分页函数默认会将GET链接转化,所以有一些汉字在传值时会出错,特此写出以下函数,不改变链接模式,追加跳转参数的方式
/*
* 数据分页
* 参数 $count数据条数 $row 调用条数
* 返回值
* $array[limit] sql坐标
* $array['pages'] 分页链接坐标
*/
function page($count,$row){
if(!$count){return '';}//空数据将跳出
$url = $_SERVER["REQUEST_URI"]; //读取链接
$page = $_GET['page']?$_GET['page']:1; //读取分页坐标
$acount = $count; //数据条数
$pcount = ceil($acount/$row); //分页数
$url = $_GET['page']?str_replace(array('/page/'.$_GET['page'],'&page='.$_GET['page']),'',$url):$url; //去除page参数
$limit = ($page-1)*$row.','.$row; //limit调用
$pagetpl= '<div class="message">[info]</div> <ul class="paginList"> [first] [link] [end] </ul>'; //链接坐标模板
//链接模板
if(strstr($url,'&')||strstr($url,'=')){
$url = $url.'&page=[url]';
}elseif(substr($url,-5)=='.html'){
$url = substr($url,0,-5).'/page/[url].html';
}else{
$url = $url.'/page/[url]';
}
//信息简介
$info = '共 '.$acount.' 条信息 '.$page.'/'.$pcount.' 页';
//第一页
$first = ($page!=1)?'<li class="p_first"><a href="'.str_replace('[url]',1,$url).'">第一页</a></li>':'';
//最后一页
$end = ($page!=$pcount)?'<li class="p_end"><a href="'.str_replace('[url]',$pcount,$url).'">最后一页</a></li>':'';
//上一页
$prev = ($page-1)<1?'':$page-1;
$prev = $prev?'<li><a class="pagepre" href="'.str_replace('[url]',$prev,$url).'">上一页</a></li>':$prev;
//下一页
$next = ($page+1)>$pcount?'':$page+1;
$next = $next?'<li><a class="pagenxt" href="'.str_replace('[url]',$next,$url).'">下一页</a></li>':$next;
//链接坐标
$pagelist = '';
for($i =1;$i<$pcount+1;$i++){
if($i == $page){
$pagelist .= "<li class='phover'><a>$i</a></li>";
}else{
$pagelist .= "<li><a href='".str_replace('[url]',$i,$url)."'>$i</a></li>";
}
}
$pagelist = $prev.$pagelist.$next;
$pagelist = ($pcount>1)?$pagelist:'';
$show = str_replace('[info]',$info,$pagetpl);
$show = str_replace('[first]',$first,$show);
$show = str_replace('[link]',$pagelist,$show);
$show = str_replace('[end]',$end,$show);
$r['pages'] = $show;
$r['limit'] = $limit;
return $r;
}
调用方法 TP框架
$M = M('article');
$page = page($M->where($w)->count(),25);
$list = $M->where($w)->order('wd_px desc,wd_id desc')->limit($page['limit'])->select();
$this->assign('page',$page['pages']);
$this->assign('list',$list);
该方法不局限于TP内,适用于所有PHP程序
原帖地址
http://www.90coder.com/Home/Index/article/tid/46.html