0

0

哪位帮忙看下这个分页类怎么调用,我说的是在查询语句下

php中文网

php中文网

发布时间:2016-06-23 13:42:14

|

1436人浏览过

|

来源于php中文网

原创

网上找到一个比较好看的分页类,尽管作者已经说明怎么调用了,但是对我来说还是不太明白,主要是在sql语句里面怎么调用,下面是分页类代码:

<?php/** * 可以灵活定制的分页类 *  * 可以定制的选项包括,分页链接显示效果,当前页码链接按钮的样式,URL中获取分页值的名字,可以随意带自己的参数 *  * 使用方法: * 1、初始化类的时候需要传入参数,类型为数组。 * array( *  (必填)'totalRows'=>'100', 需要显示的数据的总条数; *  (必填)'pageSize'=>'2', 每页需要显示的代码数量; *  (必填)'currentPage'=>$_GET['p'], 当前页码,默认可以通过$_GET['p']获取,其中名字p可以定制 *  (必填)'baseUrl'=>'/welcome?id=3',你当前页面的链接地址,比如为http://www.xxx.com/test.php(或者/test.php),如果后面带有参数则可以为http://www.xxx.com/test?id=8 *  (选填,默认为3)'offset'=>'3', 当前页码的左右偏移量,比如当前页码为5,则在5的左右各显示几个数字链接,默认为3个,则效果为2,3,4,5,6,7,8 *  (选填,默认为p)'pageString'=>'p',通过$_GET['p']获取当前页码时候的名字,默认为p *  (选填,默认为here)'className'=>'here',当前页码链接按钮的样式,默认样式名为here,所以你可以这样写css样式.here{background:#FF4500;} ) *  * 2、可以使用的方法。 *  A、初始化类后,需要调用pagination([$style = '1'][,$output=TRUE])方法产生分页链接 *  关于参数的说明: *  @param $style (默认为 1,可不填写) :获取链接全部组件,即 首页+上一页+数字链接+下一页+尾页 *  @param $style == 2 :仅获取数字链接 *  @param $style == 3 :仅获取上一页+下一页 *  @param $style == 4 :仅获取上一页+数字链接+下一页,(不包含首尾页) *   *  @param $output (默认为TRUE),返回分页链接 *  @param $output 为FALSE时,直接输出分页链接 *   *  B、getCurrentPage()获取当前页码,经过真伪判断后的,防止用户自行输入错误,比如http://www.xxx.com/test?p=-100;此时通过此方法获取当前页码为1 *   *  C、pageAmount()获取总的页码数量 *   * @author 星空幻颖 * @link http://blog.sina.com.cn/yanyinghq * */class Page{    private $pageSize; //您的网站每一页显示的列表条数    private $totalRows; //通过数据库查询返回的总的记录条数    private $url; //基准URL    private $pageAmount; //页码的总数    private $currentPage; //当前的页码    private $offset = 4; //页码偏移量    private $pageString = 'p'; //页码在URL中的名字    private $classHere = 'class="here"'; //当前页链接的class样式类名,默认为here         //初始化当前页码,记录总条数,每页多少条记录    public function __construct($param)    {        $this->pageSize = $param['pageSize'];        $this->totalRows = $param['totalRows'];        $this->url = $param['baseUrl'];        $this->offset = !empty($param['offset'])?$param['offset']:$this->offset;        $this->pageString =  !empty($param['pageString'])?$param['pageString']:$this->pageString;        $this->classHere = !empty($param['className'])?$param['className']:$this->classHere;        $this->currentPage = (int)$param['currentPage'];    }         /**     * 创建分页链接     *      * @param $style 默认为 1 :获取链接全部组件     * @param $style == 2 :仅获取数字链接     * @param $style == 3 :仅获取上一页,下一页     * @param $style == 4 :仅获取上一页、下一页、数字链接,不包含首尾页     *      * @param $output 为TRUE时,返回分页链接     * @param $output 为FALSE时,直接输出分页链接     *      */    public function pagination($style = '1',$output=TRUE)    {        $this->baseUrl();        $this->pageAmount();        $this->currentPage();                     //获取全部组件        if($style == '1')        {            $page = $this->indexPage().$this->prevPage().$this->pageNumber().$this->nextPage().$this->endPage();        }        else if($style == '2')        {            //获取纯数字链接            $page = $this->pageNumber();        }        else if($style == '3')        {            //只获取上一页下一页            $page = $this->prevPage().$this->nextPage();        }        else if($style =='4')        {            //上一页、下一页、数字链接            $page = $this->prevPage().$this->pageNumber().$this->nextPage();        }                 if($output)        {            return $page;        }        else        {            echo $page;        }    }         /**     * 获取当前页码     *      * @return 当前页码,经过真伪判断的     */    public function getCurrentPage()    {        $this->pageAmount();        $this->currentPage();        return $this->currentPage;    }         /**     * 计算出所有的页数     *      * 可以类外面直接调用此方法返回页码总数     *      * @return 页码的总数     */    public function pageAmount()    {        $this->pageAmount = ceil( $this->totalRows / $this->pageSize);        if($this->pageAmount <= 0)        {            $this->pageAmount = '1';        }        return $this->pageAmount;    }         /**     * 判断基准链接是否携带参数     *      * 基准链接为用户提交当前页码链接     *      * 如果携带参数,则在链接之后加&p=     *      * 如果不携带参数,则直接加?p=     */    private function baseUrl()    {        if(preg_match('/\?/', $this->url))        {            $this->url = $this->url.'&'.$this->pageString.'=';        }        else        {            $this->url = $this->url.'?'.$this->pageString.'=';        }    }         /**     * 验证当前页码的真伪性     *      * 如果当前页码小于1或者没有,则默认当前页码为1     *      * 如果当前页码大于页码总数,则默认当前页码为页码总数     *      */    private function currentPage()    {        if($this->currentPage < 1 || !$this->currentPage)        {            $this->currentPage = 1;        }        else if(($this->currentPage > $this->pageAmount))        {            $this->currentPage = $this->pageAmount;        }    }         /**     * 首页链接     */    private function indexPage()    {        if($this->currentPage == 1) return;        return '<a href="'.$this->url.'1">首页</a>';    }         /**     * 尾页链接     */    private function endPage()    {        if($this->currentPage == $this->pageAmount) return;        return '<a href="'.$this->url.$this->pageAmount.'">尾页</a>';    }         /**     * 上一页     */    private function prevPage()    {        if($this->currentPage == 1) return;        return '<a href="'.$this->url.( $this->currentPage - 1 ).'">上一页</a>';    }         /**     * 下一页     */    private function nextPage()    {        if($this->currentPage == $this->pageAmount) return;        return '<a href="'.$this->url.( $this->currentPage + 1 ).'">下一页</a>';    }         /**     * 中间页码的链接     *      */    private function pageNumber()    {        $left ="";        $right = "";                 //如果总记录的条数“大于”所有链接的数量时候        if($this->pageAmount > ($this->offset * 2 + 1))        {            //当前页码距离首页的距离            $leftNum = $this->currentPage - 1;                         //当前页码距离尾页的距离            $rightNum = $this->pageAmount - $this->currentPage;                         //当当前页码距离首页距离不足偏移量offset时候,在右边补齐缺少的小方块            if( $leftNum < $this->offset)            {                //左边的链接                for($i = $leftNum; $i >= 1 ; $i--)                {                    $left .= '<a href="'.$this->url.( $this->currentPage - $i ).'">'.( $this->currentPage - $i ).'</a>';                }                                 //右边的链接                for($j = 1; $j <= ($this->offset * 2 - $leftNum); $j++)                {                    $right .= '<a href="'.$this->url.( $this->currentPage + $j ).'">'.( $this->currentPage + $j ).'</a>';                }            }            else if($rightNum < $this->offset)            {                //左边的链接                for($i = ($this->offset * 2 - $rightNum); $i >= 1 ; $i--)                {                    $left .= '<a href="'.$this->url.( $this->currentPage - $i ).'">'.( $this->currentPage - $i ).'</a>';                }                                 //右边的链接                for($j = 1; $j <= $rightNum; $j++)                {                    $right .= '<a href="'.$this->url.( $this->currentPage + $j ).'">'.( $this->currentPage + $j ).'</a>';                }            }            else            {                //当前链接左边的链接                for($i = $this->offset; $i >= 1 ; $i--)                {                    $left .= '<a href="'.$this->url.( $this->currentPage - $i ).'">'.( $this->currentPage - $i ).'</a>';                 }                                 //当前链接右边的链接                for($j = 1; $j <= $this->offset; $j++)                {                    $right .= '<a href="'.$this->url.( $this->currentPage + $j ).'">'.( $this->currentPage + $j ).'</a>';                }            }             return $left.'<a href="'.$this->url.$this->currentPage.'" class="here">'.$this->currentPage.'</a>'.$right;        }        else        {            $allLink='';            //当页码总数小于需要显示的链接数量时候,则全部显示出来            for($j = 1; $j <= $this->pageAmount; $j++)            {                 $allLink.='<a href="'.$this->url.$j.'" '.($j == $this->currentPage?$this->classHere:'').'>'.$j.'</a>';            }            return $allLink;        }    } }


回复讨论(解决方案)

这里是php调用页面,如下代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>无标题文档</title><style type="text/css">li{width:100%; overflow:hidden; margin-top:20px; list-style:none;}a{display:block; height:30px; min-width:30px; text-align:center; font-size:14px; border:1px solid #d6d6d6; float:left; margin-left:10px; padding:3px 5px; line-height:30px; text-decoration:none; color:#666;}a:hover,a.here{background:#FF4500; border-color:#FF4500; color:#FFF;} </style></head> <body> <?phprequire_once('/page.php'); $param = array('totalRows'=>'100','pageSize'=>'2','currentPage'=>@$_GET['p'],'baseUrl'=>'/page_index.php?id=3');  $page1 = new Page($param);$page2 = new Page($param);$page3 = new Page($param);$page4 = new Page($param);$page5 = new Page($param);这中间应该是sql查询语句,但是分页函数怎么调用我却不知道怎么写了 echo '总记录数:100';echo '<hr />';echo '每页记录2条<hr/ >';echo '当前页码:'.$page1->getCurrentPage().'<hr />';echo '共计'.$page1->pageAmount().'页<hr />';echo '<li>'.$page1->pagination().'</li>';echo '<li>'.$page2->pagination('1').'</li>'; //默认为1,所以和不填写效果一样echo '<li>'.$page3->pagination('2').'</li>';echo '<li>'.$page4->pagination('3').'</li>';echo '<li>'.$page5->pagination('4').'</li>';?></body></html>

这个类只负责分页条的产生
唯一可能与数据库查询有关的是参数数组 $param['totalRows'] 项
因为待分页的总行数是查询得到的,所以这个查询应在 $param 赋值之前完成

这个类只负责分页条的产生
唯一可能与数据库查询有关的是参数数组 $param['totalRows'] 项
因为待分页的总行数是查询得到的,所以这个查询应在 $param 赋值之前完成


那版主这应该怎么写?

麦艺画板(Max.art)
麦艺画板(Max.art)

AI工业设计平台,专注于汽车设计,线稿、渲染、3D建模全流程覆盖

下载

楼主也够懒的了,我这里有个给你,样式都写好了

<?phpclass Page { private $total; //数据表中总记录数private $listRows; //每页显示行数private $limit;private $uri; private $pageNum; //页数private $config=array('header'=>"个记录", "prev"=>"上一页", "next"=>"下一页", "first"=>"首 页", "last"=>"尾 页"); private $listNum=8;/*  $total  11. * $listRows 12. */ public function __construct($total, $listRows=10, $pa=""){     $this->total=$total; 		$this->listRows=$listRows; 		$this->uri=$this->getUri($pa); 		$this->page=!empty($_GET["page"]) ? $_GET["page"] : 1; 	  $this->pageNum=ceil($this->total/$this->listRows); 		$this->limit=$this->setLimit(); 		} private function setLimit(){ 		 return "Limit ".($this->page-1)*$this->listRows.", {$this->listRows}"; 		 } private function getUri($pa){    $url=$_SERVER["REQUEST_URI"].(strpos($_SERVER["REQUEST_URI"], '?')?'':"?").$pa;  	 $parse=parse_url($url); 	 if(isset($parse["query"])){ 	 parse_str($parse['query'],$params); 	  unset($params["page"]); 		$url=$parse['path'].'?'.http_build_query($params);    		} 	 return $url; 	 }  public function __get($args){       if($args=="limit") 			  return $this->limit; 				 else 				   return null; 					 } private function start(){  if($this->total==0)  return 0;   else  return ($this->page-1)*$this->listRows+1;  } private function end(){  return min($this->page*$this->listRows,$this->total); } private function first(){  if($this->page==1)    $html.=''; 	 else 	 $html.="<li><a href='{$this->uri}&page=1'>{$this->config["first"]}</a></li>"; 	  return $html; 	} private function prev(){ if($this->page==1)   $html.=''; else  $html.="<li><a href='{$this->uri}&page=".($this->page-1)."'>{$this->config["prev"]}</a></li>";  return $html; } private function pageList(){ $linkPage="";  $inum=floor($this->listNum/2);  for($i=$inum; $i>=1; $i--){  $page=$this->page-$i;  if($page<1)	 continue;  $linkPage.="<li><a href='{$this->uri}&page={$page}'>{$page}</a></li>"; }  $linkPage.="<li><a href='#' class='here'>{$this->page}</a></li>";for($i=1; $i<=$inum; $i++){ $page=$this->page+$i; if($page<=$this->pageNum) $linkPage.="<li><a href='{$this->uri}&page={$page}'>{$page}</a></li>";else break; }return $linkPage;}private function next(){ if($this->page==$this->pageNum)$html.=''; else $html.="<li><a href='{$this->uri}&page=".($this->page+1)."'>{$this->config["next"]}</a></li>"; return $html;}private function last(){ if($this->page==$this->pageNum)$html.='';else$html.="<li><a href='{$this->uri}&page=".($this->pageNum)."'>{$this->config["last"]}</a></li>";return $html;}/*private function goPage(){return ' <input type="text" class="inputall input50" onkeydown="javascript:if(event.keyCode==13){var page=(this.value>'.$this->pageNum.')?'.$this->pageNum.':this.value;location=\''.$this->uri.'&page=\'+page+\'\'}" value="'.$this->page.'" style="width:25px"> <input type="button" value="GO" style="width:45px;height:30;line-height:30px;border-radius:4px;" onclick="javascript:var page=(this.previousSibling.value>'.$this->pageNum.')?'.$this->pageNum.':this.previousSibling.value;location=\''.$this->uri.'&page=\'+page+\'\'"> ';}*/private function goPage(){return ' <input type="text" class="inputall input50" onkeydown="javascript:if(event.keyCode==13){var page=(this.value>'.$this->pageNum.')?'.$this->pageNum.':this.value;location=\''.$this->uri.'&page=\'+page+\'\'}" value="'.$this->page.'" style="width:25px"><input type="button" value="GO" style="width:45px;height:30;line-height:30px;border-radius:4px;" onclick="javascript:var page=(this.previousSibling.value>'.$this->pageNum.')?'.$this->pageNum.':this.previousSibling.value;location=\''.$this->uri.'&page=\'+page+\'\'"> ';}function fpage($display=array(0,1,2,3,4,5,6,7,8)){$html[0]="共有<b>{$this->total}</b>{$this->config["header"]} ";$html[1]=" 每页显示<b>".($this->end()-$this->start()+1)."</b>条,本页<b>{$this->start()}-{$this->end()}</b>条 "; $html[2]=" <b>{$this->page}/{$this->pageNum}</b>页 ";$html[3]=$this->first();$html[4]=$this->prev();$html[5]=$this->pageList();$html[6]=$this->next();$html[7]=$this->last();$html[8]=$this->goPage();$fpage='';foreach($display as $index){ $fpage.=$html[$index];} return $fpage;} }?>

具体调用方法:
$num=15;  //每页显示数
  $page=new page($total,$num);
  $result=$db->query("select * from ".$db->table('article').$where." order by addtime desc {$page->limit}");
          循环
    fpage(array(3,4,5,6,7,0,1,2,8));?>  //php分页类调用,这些数字可以去类文件里面看

    fpage(array(3,4,5,6,7,8));?>
这是我调用的
CSS样式文件
.fenye li{float:left; font-family:Arial, Helvetica, sans-serif; margin-left:6px; display:inline; line-height:30px;}
.fenye a{display:block;height:30px; min-width:30px; text-align:center; font-size:14px; border:1px solid #d6d6d6; float:left; margin-left:3px; padding:3px 5px;line-height:30px;text-decoration:none;color:#666;}
.fenye a:hover{background:#FF4500;border-color:#FF4500; color:#FFF;}
.fenye a.here{background:#FF4500;border-color:#FF4500; color:#FFF;}
.fenye .sel{background:#E5EDF2; color:#333; font-weight:bold; border:1px #C2D5E3 solid;  padding:0 12px; border-radius:4px}
下面上效果图:

有哪位需要的朋友也可以拿去用

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

797

2026.02.13

微博网页版主页入口与登录指南_官方网页端快速访问方法
微博网页版主页入口与登录指南_官方网页端快速访问方法

本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。

272

2026.02.13

Flutter跨平台开发与状态管理实战
Flutter跨平台开发与状态管理实战

本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。

144

2026.02.13

TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

25

2026.02.13

Redis高可用架构与分布式缓存实战
Redis高可用架构与分布式缓存实战

本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。

92

2026.02.13

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

53

2026.02.12

雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法
雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法

本专题系统整理雨课堂网页版官方入口及在线登录方式,涵盖账号登录流程、官方直连入口及平台访问方法说明,帮助师生用户快速进入雨课堂在线教学平台,实现便捷、高效的课程学习与教学管理体验。

15

2026.02.12

豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法
豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法

本专题汇总豆包AI官方网页版入口及在线使用方式,涵盖智能写作工具、图片生成体验入口和官网登录方法,帮助用户快速直达豆包AI平台,高效完成文本创作与AI生图任务,实现便捷智能创作体验。

717

2026.02.12

PostgreSQL性能优化与索引调优实战
PostgreSQL性能优化与索引调优实战

本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

64

2026.02.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号