
正文
php漂亮的数据分页类 php分类信息系统
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
求这种分页的写法首页 上一页1 2 3 4 5 6 7下一页 尾页,用PHP代码写拜托啦。关键语法就可以谢谢啦
真巧,前段时间刚好写了一个这个格式的分页类
第一个方法是返回数组格式的数据,可以方便的在模板上添加自己喜欢的样式
第二个方法是直接返回的html代码,可以直接输出
?php
header('Content-type:text/html; Charset=utf-8');
/**
* @author xuyonglinwoaixuyonglin1@163.com
*/
class PageHelper{
/**
* createPage 生成分页跳转链接
* @param
* $page 当前页
* $rowCount 总条目数
* $pagesize 每页显示最大条数
* $params 页数后面的参数
* $front 前面显示几个页码
* $end 后面显示几个页码
*/
function createPage($page,$rowCount,$pagesize,$pager,$params,$front=5,$end=5) {
$count_page = ceil($rowCount/$pagesize);
if($page $count_page){
$page = $count_page;
}
$page1 = $page;
$page2 = $page;
for ($i = 0; $i $end+1; $i++) {
if ($page1 $count_page) {
break;
}
$rs1[] = $page1;
$page1++;
}
for ($i = 0; $i $front+1; $i++) {
$page2--;
if ($page2 == 0) {
break;
}
$rs2[] = $page2;
}
//$rs[] = '首页';
//$rs[] = '上一页';
@sort($rs2);
if($rs2){
foreach($rs2 as $value){
$rs[] = $value;
}
}
if($rs1){
foreach($rs1 as $value){
$rs[] = $value;
}
}
//$rs[] = '下一页';
//$rs[] = '尾页';
$re_pages = array(
'firstPage'='1',
'lastPage'=$count_page,
'middles'=$rs,
'currentPage'=$page,
'countPage'=$count_page
);
return $re_pages;
}
/**
* 分页类
* 描述:用于数据分页显示链接
* @param int rowCount 表示数据总数量
* @param int pagesize 每页显示的数量
* @param sting $pager
* @param params 表示页码的超链中除了page参数之外的其它参数
* @return string 表示分页的字符串
*/
public function showPage($page,$rowCount,$pagesize,$pager,$params){
//TODO: 数据分页显示
$count_page = ceil($rowCount/$pagesize);
if($page $count_page){
$page = $count_page;
}
$page1 = $page;
$page2 = $page;
/*循环出页数*/
for ($i = 0; $i 6; $i++) {
if ($page1 $count_page) {
break;
}
if ($page1 == $page) {
$rs1[] = $page1;
$page1++;
}else{
$rs1[] = 'a href="'.$pager.'?page='.$page1.$params.'"'.$page1.'/a';
$page1++;
}
}
for ($i = 0; $i 5; $i++) {
if ($page2 $count_page) {
break;
}
$page2--;
if ($page2 == 0) {
break;
}
$rs2[] = 'a href="'.$pager.'?page='.$page2.$params.'"'.$page2.'/a';
}
/*判断是否是第一页*/
if ($page == '1') {
$rs[] = '首页';
$rs[] = '上一页';
}else{
$rs[] = "a href=$pager?page=1 $params首页/a";
$rs[] = 'a href="'.$pager.'?page='.($page-1).$params.'"上一页/a';
}
@sort($rs2);
if($rs2){
foreach($rs2 as $value){
$rs[] = $value;
}
}
if($rs1){
foreach($rs1 as $value){
$rs[] = $value;
}
}
/*判断是否是最后一页*/
if ($page == $count_page) {
$rs[] = '下一页';
$rs[] = '尾页';
}else{
$rs[] = 'a href="'.$pager.'?page='.($page+1).$params.'"下一页/a';
$rs[] = "a href=$pager?page=$count_page $params尾页/a";
}
foreach($rs as $value){
$str .= $value.' ';
}
return $str;
}
}
//以下为示例
$ss = new PageHelper();
echo 'pre';
//var_dump($ss-createPage(3,10000,20,'sss.php','ss',15,15));
var_dump($ss-showPage(35,10000,20,'sss.php','type=1'));
?
你把这段代码复制了,然后粘贴到PHP文件里面运行一下就可以了
最后一行代码 里面的几个参数分别是
当前页数,数据总条数,每页显示多少条,需要跳转的页面,页数后面需要加的其它参数
相关问答
Q1: thinkphp怎么让实现数据分页
你的原本代码:
function accomplish_indent(){
$User = M('order'); // 实例化User对象
$count = $User-where('status=0')-count();// 查询满足要求的总记录数
$Page = new \Think\Page($count5);// 实例化分页类 传入总记录数和每页显示的记录数(5)
$show = $Page-show();// 分页显示输出
// 进行分页数据查询 注意limit方法的参数要使用Page类的属性
$list = $User-where('status=0')-order('add_time')-limit($Page-firstRow.''.$Page-listRows)-select();
Q2: PHP显示很多数据库信息,如何自动分页呢?代码
这是我以前学php写的 哈哈 你可以看看
?php
/**
* 分页类
* 1.实例化分页类,例:mypage new page("SQL语句","每页显示记录条数");
* 2.调用类中的 genpage() 方法,返回分页生成的SQL语句;
* 3.执行新生成的SQL语句;
* 4.调用 showpage_1() 或 showpage_2() 方法显示分页的翻页(可也以自定义返回显示的方式)
* 实例:
* $page = new page("select * from ly",2);
* $sql=$page-genpage();
* $ar=mysql_query($sql);
* while($nu=mysql_fetch_array($ar)){
* echo $nu[0].'br';
* }
* $page-showpage_2();
*/
class page{
private $totalnum; //总记录数
private $pagecount; //总页数
private $f_pagenum; //当前页的第一条记录
private $sql;
private $page; //当前页
private $page_size; //每页显示数量
private $pagesql;
private $total;
private $url; //当前页url
private $beforepage; //上一页
private $nextpage; //下一页
function __construct($sql,$page_size){ //传入sql语句和每页显示条数
$this-sql=$sql;
$this-page_size=$page_size;
$this-page=is_numeric($_GET[page]);
$this-page=substr($this-page,0,10);
$this-page=mysql_real_escape_string($this-page);
if(ereg("^[0-9]*[1-9][0-9]*$",$this-page)!=1){
$this-page=1;
}
if($this-page99999999){
$this-page=1;
}
}
function genpage(){
//
// if(!$this-page){
// $this-page=1;
// }
$this-pagesql = strstr($this-sqlcz," from ");
$this-pagesql = "select count(*) as ids ".$this-pagesql;
$this-total=mysql_query($this-sql);
$this-totalnum=mysql_num_rows($this-total); //总记录数
$this-pagecount=ceil($this-totalnum/$this-page_size); //总页数
$this-f_pagenum=$this-page_size*($this-page-1); //当前页的第一条记录
$this-sql .=" limit $this-f_pagenum,$this-page_size ";
return $this-sql;
}
//替换url中的page的页数
function replace_page($npage){
$this-url=$_SERVER["REQUEST_URI"]; //获取当前url
$check = strpos($this-url, 'page='); //判断url中是否有page分页参数
if($check==false){ //如果没有page分页参数
if(strpos($this-url, '?')==false){ //判断是否url是否有“ ?”号,
$this-url=$this-url."?page=1"; //如果没有“ ?”号,说明之前url没有参数
}else{
$this-url=$this-url."page=1"; //如果有“ ?”号,说明有参数,追加参数要改用符号
}
}
$npage="page=".$npage; //跳转到的页
$zz='[page=\d*]';
return preg_replace($zz,$npage,$this-url); //正则替换掉url中的page参数,实现分页
}
//显示总页数
function show_all_page(){
return $this-pagecount;
}
//显示当前页
function show_current_page(){
return $this-page;
}
//显示首页和上一页
function show_firstAndup_page(){
if($this-page==1){
return "首页|上一页";
}else{
$this-beforepage=$this-page-1;
return "a href=".$this-replace_page(1)."首页/a|a href=".$this-replace_page($this-beforepage)."上一页/a";
}
}
//显示下一页和最后页
function show_lastAnddown_page(){
if(($this-page==$this-pagecount)||($this-pagecount==0)){
return "下一页|尾页";
}else{
$this-nextpage=$this-page+1;
return "a href=".$this-replace_page($this-nextpage)."下一页/a|a href=".$this-replace_page($this-pagecount)."尾页/a";
}
}
//循环显示页数
function show_loop_page(){
$shownum =10/2;
$startpage = ($this-page$shownum)?$this-page-$shownum:1;
$endpage = ($this-page+$shownum=$this-pagecount)?$this-page+$shownum:$this-pagecount;
for($i=$startpage;$i=$endpage;$i++)
{
if($i==$this-page) {
$a= " b[".($i)."]/b ";
}else{
$a= " a href=".$this-replace_page($i)."".($i)."/a ";
}
$b=$b.$a;
}
return $b;
}
//整体显示第一种方案
function showpage_1(){
return "共".$this-show_all_page()."页nbsp"."当前第".$this-show_current_page()."页nbsp".$this-show_firstAndup_page()."nbsp"
.$this-show_loop_page()."nbsp".$this-show_lastAnddown_page();
}
//整体显示第二种方案
function showpage_2(){
return $this-show_firstAndup_page()."nbsp".$this-show_loop_page()."nbsp".$this-show_lastAnddown_page();
}
}
?
Q3: ThinkPHP使用心得分享-分页类Page的用法
ThinkPHP中php漂亮的数据分页类的Page类在ThinkPHP/Extend/Library/ORG/Util/Page.class.php中php漂亮的数据分页类,所以使用前要引入Page类:
复制代码
代码如下:
import('ORG.Util.Page');
//Page类的引入
$db
=
M('abc');//实例化数据表abc
$where
=
array(
'id'='2';
);//条件语句$where,例表中字段id的值为2
$count
=
$db-where($where)-count();//获取符合条件的数据总数count
$page
=
new
Page($count,
10);//实例化page类,传入数据总数和每页显示10条内容
$limit
=
$page-firstRow
.
','
.
$page-listRows;//每页的数据数和内容$limit
$result
=$db-where($where))-limit($limit)-select();//分页查询结果
$this-result
=
$result;//赋值
$this-show
=
$page-show();//获取分页的底部信息
以上代码是分页类实现的基本语句,当然喜欢使用原生sql语句的朋友也可以配合原生sql语句实现查询分页php漂亮的数据分页类:
复制代码
代码如下:
import('ORG.Util.Page');
//Page类的引入
$db
=
M('abc');//实例化数据表abc
$where
=
array(
'id'='2';
);//条件语句$where,例表中字段id的值为2
$count
=
$db-where($where)-count();//获取符合条件的数据总数count
$page
=
new
Page($count,
10);//实例化page类,传入数据总数和每页显示10条内容
$Modle
=
new
Model();//实例化新数据模型
$sql
=
'select
id,name
from
abc
where
'.$where.'
limit
'.$page-firstRow.','.$page-listRows;//sql语句
$result
=
$Modle-query($sql);//执行sql语句
$this-result
=
$result
$this-show=$page-show();
当然,分布查询获取的内容也可以先对查询完的数据进行处理再赋值,比如
复制代码
代码如下:
...
$result
=$db-where($where))-limit($limit)-select();//分页查询结果
$res
=
abc($result);//abc方法(自定义方法或php函数)对结果$result进行数据排序或重组处理等
$this-result
=
$res;//赋值
Q4: thinkphp数据分页怎么使用
第一种:利用Page类和limit方法
$User = M('User'); // 实例化User对象
import('ORG.Util.Page');// 导入分页类
$count = $User-where('status=1')-count();// 查询满足要求的总记录数
$Page = new Page($count,25);// 实例化分页类 传入总记录数和每页显示的记录数
$show = $Page-show();// 分页显示输出
// 进行分页数据查询 注意limit方法的参数要使用Page类的属性
$list = $User-where('status=1')-order('create_time')-limit($Page-firstRow.','.$Page-listRows)-select();
$this-assign('list',$list);// 赋值数据集
$this-assign('page',$show);// 赋值分页输出
$this-display(); // 输出模板
第二种:分页类和page方法的实现
$User = M('User'); // 实例化User对象
// 进行分页数据查询 注意page方法的参数的前面部分是当前的页数使用 $_GET[p]获取
$list = $User-where('status=1')-order('create_time')-page($_GET['p'].',25')-select();
$this-assign('list',$list);// 赋值数据集
import(“ORG.Util.Page”);// 导入分页类
$count = $User-where('status=1')-count();// 查询满足要求的总记录数
$Page = new Page($count,25);// 实例化分页类 传入总记录数和每页显示的记录数
$show = $Page-show();// 分页显示输出
$this-assign('page',$show);// 赋值分页输出
$this-display(); // 输出模板
带入查询条件
如果是POST方式查询,如何确保分页之后能够保持原先的查询条件呢,我们可以给分页类传入参数,方法是给分页类的parameter属性赋值:
import('ORG.Util.Page');// 导入分页类
$mapcount = $User-where($map)-count();// 查询满足要求的总记录数
$Page = new Page($count,25);// 实例化分页类 传入总记录数和每页显示的记录数
//分页跳转的时候保证查询条件
foreach($map as $key=$val) {
$Page-parameter .= "$key=".urlencode($val).'';
}
$show = $Page-show();// 分页显示输出
php漂亮的数据分页类的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于php分类信息系统、php漂亮的数据分页类的信息别忘了在本站进行查找喔。





