php分页函数

功能强大的php分页函数 分页是每一个程序需要去理解的东西,学习过的几门语言中我发现分页原理都是一样的,下面为php初学者分析一下php分页实现与最后面补充了一个超级强大的分页函数。 文章内容分页主要有两个办法: 办法一、按字数控制进行分页 按字数分页办法简单易用,但效果不好. 大致思想:首先、设定每页能容纳的最大字数,然后、计算文章内容的总字数,再由总字数和单页最大字数计算出出总页数,这样整个分页的准备工作就已经做好了. 具体到每一页的显示内容可以通过内容截取来实现,比如:页容纳500字,文章内容有2200字,那么当页面传递page=2时应该显示第501至1000之间的内容. 这种办法简单,但显示时可能会遇到麻烦,文 立即下载

<?php
class SubPages{

private $each_disNums;//每页显示的条目数
private $nums;//总条目数
private $current_page;//当前被选中的页
private $sub_pages;//每次显示的页数
private $pageNums;//总页数
private $page_array = array();//用来构造分页的数组
private $subPage_link;//每个分页的链接
private $subPage_type;//显示分页的类型
/*

__construct是SubPages的构造函数,用来在创建类的时候自动运行.
@$each_disNums 每页显示的条目数
@nums    总条目数
@current_num    当前被选中的页
@sub_pages      每次显示的页数
@subPage_link   每个分页的链接
@subPage_type   显示分页的类型

当@subPage_type=1的时候为普通分页模式
        example: 共4523条记录,每页显示10条,当前第1/453页 [首页] [上页] [下页] [尾页]
        当@subPage_type=2的时候为经典分页样式
        example: 当前第1/453页 [首页] [上页] 1 2 3 4 5 6 7 8 9 10 [下页] [尾页]
*/
function __construct($each_disNums,$nums,$current_page,$sub_pages,$subPage_link,$subPage_type){
  
$this->each_disNums=intval($each_disNums);
  
$this->nums=intval($nums);
  
if(!$current_page){
   
$this->current_page=1;
   }
else{
   
$this->current_page=intval($current_page);
   }
  
$this->sub_pages=intval($sub_pages);
  
$this->pageNums=ceil($nums/$each_disNums);
  
$this->subPage_link=$subPage_link;
  
$this->show_SubPages($subPage_type);
  
//echo $this->pageNums."--".$this->sub_pages;
}


/*
   __destruct析构函数,当类不在使用的时候调用,该函数用来释放资源。
*/
function __destruct(){
  
unset($each_disNums);
  
unset($nums);
  
unset($current_page);
  
unset($sub_pages);
  
unset($pageNums);
  
unset($page_array);
  
unset($subPage_link);
  
unset($subPage_type);
}

/*
   show_SubPages函数用在构造函数里面。而且用来判断显示什么样子的分页
*/
function show_SubPages($subPage_type){
  
if($subPage_type == 1){
   
$this->subPageCss1();
   }
elseif ($subPage_type == 2){
   
$this->subPageCss2();
   }
}


/*
   用来给建立分页的数组初始化的函数。
*/
function initArray(){
  
for($i=0;$i<$this->sub_pages;$i++){
   
$this->page_array[$i]=$i;
   }
  
return $this->page_array;
}


/*
   construct_num_Page该函数使用来构造显示的条目
   即使:[1][2][3][4][5][6][7][8][9][10]
*/
function construct_num_Page(){
  
if($this->pageNums < $this->sub_pages){
   
$current_array=array();
   
for($i=0;$i<$this->pageNums;$i++){
    
$current_array[$i]=$i+1;
    }
   }
else{
   
$current_array=$this->initArray();
   
if($this->current_page <= 3){
    
for($i=0;$i<count($current_array);$i++){
     
$current_array[$i]=$i+1;
     }
    }
elseif ($this->current_page <= $this->pageNums && $this->current_page > $this->pageNums - $this->sub_pages + 1 ){
    
for($i=0;$i<count($current_array);$i++){
     
$current_array[$i]=($this->pageNums)-($this->sub_pages)+1+$i;
     }
    }
else{
    
for($i=0;$i<count($current_array);$i++){
     
$current_array[$i]=$this->current_page-2+$i;
     }
    }
   }

  
return $current_array;
}

/*
构造普通模式的分页
共4523条记录,每页显示10条,当前第1/453页 [首页] [上页] [下页] [尾页]
*/
function subPageCss1(){
  
$subPageCss1Str="";
  
$subPageCss1Str.="共".$this->nums."条记录,";
  
$subPageCss1Str.="每页显示".$this->each_disNums."条,";
  
$subPageCss1Str.="当前第".$this->current_page."/".$this->pageNums."页 ";
  
if($this->current_page > 1){
   
$firstPageUrl=$this->subPage_link."1";
   
$prewPageUrl=$this->subPage_link.($this->current_page-1);
   
$subPageCss1Str.="[<a href='$firstPageUrl'>首页</a>] ";
   
$subPageCss1Str.="[<a href='$prewPageUrl'>上一页</a>] ";
   }
else {
   
$subPageCss1Str.="[首页] ";
   
$subPageCss1Str.="[上一页] ";
   }

  
if($this->current_page < $this->pageNums){
   
$lastPageUrl=$this->subPage_link.$this->pageNums;
   
$nextPageUrl=$this->subPage_link.($this->current_page+1);
   
$subPageCss1Str.=" [<a href='$nextPageUrl'>下一页</a>] ";
   
$subPageCss1Str.="[<a href='$lastPageUrl'>尾页</a>] ";
   }
else {
   
$subPageCss1Str.="[下一页] ";
   
$subPageCss1Str.="[尾页] ";
   }

  
echo $subPageCss1Str;

}


/*
构造经典模式的分页
当前第1/453页 [首页] [上页] 1 2 3 4 5 6 7 8 9 10 [下页] [尾页]
*/
function subPageCss2(){
  
$subPageCss2Str="";
  
$subPageCss2Str.="当前第".$this->current_page."/".$this->pageNums."页 ";


  
if($this->current_page > 1){
   
$firstPageUrl=$this->subPage_link."1";
   
$prewPageUrl=$this->subPage_link.($this->current_page-1);
   
$subPageCss2Str.="[<a href='$firstPageUrl'>首页</a>] ";
   
$subPageCss2Str.="[<a href='$prewPageUrl'>上一页</a>] ";
   }
else {
   
$subPageCss2Str.="[首页] ";
   
$subPageCss2Str.="[上一页] ";
   }

  
$a=$this->construct_num_Page();
  
for($i=0;$i<count($a);$i++){
   
$s=$a[$i];
   
if($s == $this->current_page ){
    
$subPageCss2Str.="[<span style='color:red;font-weight:bold;'>".$s."</span>]";
    }
else{
    
$url=$this->subPage_link.$s;
    
$subPageCss2Str.="[<a href='$url'>".$s."</a>]";
    }
   }

  
if($this->current_page < $this->pageNums){
   
$lastPageUrl=$this->subPage_link.$this->pageNums;
   
$nextPageUrl=$this->subPage_link.($this->current_page+1);
   
$subPageCss2Str.=" [<a href='$nextPageUrl'>下一页</a>] ";
   
$subPageCss2Str.="[<a href='$lastPageUrl'>尾页</a>] ";
   }
else {
   
$subPageCss2Str.="[下一页] ";
   
$subPageCss2Str.="[尾页] ";
   }
  
echo $subPageCss2Str;
}
}
?>
//////////////////////////////////////////////////////////////////////////

<?

//为了避免重复包含文件而造成错误,加了判断函数是否存在的条件:
if(!function_exists(pageft))
{

//定义函数pageft(),三个参数的含义为:
//$totle:信息总数;
//$displaypg:每页显示信息数,这里设置为默认是20;
//$url:分页导航中的链接,除了加入不同的查询信息“page”外的部分都与这个URL相同。
//   默认值本该设为本页URL(即$_SERVER["REQUEST_URI"]),但设置默认值的右边只能为常量,所以该默认值设为空字符串,在函数内部再设置为本页URL。

    function pageft($totle,$displaypg=20,$url='')
    {
   
   
//定义几个全局变量:
    //$page:当前页码;
    //$firstcount:(数据库)查询的起始项;
    //$pagenav:页面导航条代码,函数内部并没有将它输出;
    //$_SERVER:读取本页URL“$_SERVER["REQUEST_URI"]”所必须。

        global $lastpg,$page,$firstcount,$pagenav,$_SERVER;
       
       
//为使函数外部可以访问这里的“$displaypg”,将它也设为全局变量。注意一个变量重新定义为全局变量后,原值被覆盖,所以这里给它重新赋值。
        $GLOBALS["displaypg"]=$displaypg;
       
       
if(!$page)
        {
           
$page=1;
        }
       
       
//如果$url使用默认,即空值,则赋值为本页URL:
        if(!$url)
        {
           
$url=$_SERVER["REQUEST_URI"];
        }
       
       
//URL分析:
        $parse_url=parse_url($url);
       
$url_query=$parse_url["query"]; //单独取出URL的查询字串
        if($url_query)
        {
       
//因为URL中可能包含了页码信息,我们要把它去掉,以便加入新的页码信息。
        //这里用到了正则表达式,请参考“PHP中的正规表达式”(http://www.pconline.com.cn/pcedu/empolder/wz/php/10111/15058.html)

            $url_query=ereg_replace("(^|&)page=$page","",$url_query);
           
           
//将处理后的URL的查询字串替换原来的URL的查询字串:
            $url=str_replace($parse_url["query"],$url_query,$url);
           
           
//在URL后加page查询信息,但待赋值:
            if($url_query)
            {
               
$url.="&page";
            }
           
else
            {
               
$url.="page";
            }   
        }
       
else
        {
           
$url.="?page";
        }
       
       
//页码计算:
        $lastpg=ceil($totle/$displaypg); //最后页,也是总页数
        $page=min($lastpg,$page);
       
$prepg=$page-1; //上一页
        $nextpg=($page==$lastpg ? 0 : $page+1); //下一页
        $firstcount=($page-1)*$displaypg;
       
/*echo $page;
        echo $firstcount;
       
*/
       
//开始分页导航条代码:
        $pagenav="显示第 <B>".($totle?($firstcount+1):0)."</B>-<B>".min($firstcount+$displaypg,$totle)."</B> 条记录,共 $totle 条记录<BR>";
       
       
//如果只有一页则跳出函数:
        if($lastpg<=1)
        {
           
return false;
        }       
       
       
$pagenav.=" <a href='$url=1'>首页</a> ";
       
if($prepg) $pagenav.=" <a href='$url=$prepg'>前页</a> "; else $pagenav.=" 前页 ";
       
if($nextpg) $pagenav.=" <a href='$url=$nextpg'>后页</a> "; else $pagenav.=" 后页 ";
       
$pagenav.=" <a href='$url=$lastpg'>尾页</a> ";
       
       
//下拉跳转列表,循环列出所有页码:
        $pagenav.=" 到第 <select name='topage' size='1' onchange='window.location=/"$url=/"+this.value'>/n";
       
for($i=1;$i<=$lastpg;$i++)
        {
           
if($i==$page)
            {
               
$pagenav.="<option value='$i' selected>$i</option>/n";
            }   
           
else
            {
               
$pagenav.="<option value='$i'>$i</option>/n";
            }   
        }
       
$pagenav.="</select> 页,共 $lastpg 页";
    }
}

?>

CANoe实战:LIN Slave一致性测试全流程解析 本文详细解析了使用CANoe进行LIN Slave一致性测试的全流程,包括测试概述、环境搭建、模块集成、测试用例详解及报告分析。通过实际案例分享,帮助工程师掌握LIN 2.0/2.1/2.2、SAE J2602和ISO 17987等标准的自动化测试方法,提升汽车电子从节点的可靠性和兼容性验证效率。 阅读详情

相关推荐

Cesium实战:如何在前端直接渲染TIFF影像(附完整代码与避坑指南)

本文详细介绍了如何在前端利用Cesium直接加载和渲染TIFF影像的完整技术方案。针对TIFF格式的地理影像数据,文章提供了从文件解析、坐标转换到像素处理与Cesium集成的全流程代码实现,并分享了性能优化与常见问题的避坑指南,帮助开发者高效实现三维地理可视化。

weixin_29290947的博客 314

php用什么函数分页,常用php分页函数

常用php分页函数…/***函数print_paging*功能:实现分页*将分页的导航制作包装成一个表的格式*分页导航格式,例如如下格式:*///几页/几条首页1234567尾页function print_paging($tb) {$this->table = $tb;$page_id = $this->get_page_id ();$up_page = $this->get_...

weixin_35973118的博客 533

保姆级CVE-2018-17066漏洞复现 DLink命令注入漏洞(更新完结)

之后按照之前复现的方式一样 我们丢到kali中执行binwalk解析。之后为了模拟 可以在kali里安装qemu-mipsel。在bin目录下可以尝试将goahead的环境搭配好。固件官网可以进行下载。

weixin_51339377的博客 879

php完整分页代码

  代码如下:   //分页统计 $perNumber=5; //每页显示的记录数 $page=@$_GET['page']; //获得当前的页面值 $count=mysql_query("select count(*) from article"); //获得记录总数 $rs=mysql_fetch_array($count); $totalNumber=$rs[0]; $total...

沉默的羔羊 1187

LTE信令流程及业务流程

eNB返回E-RAB建立响应消息,E-RAB建立列表信息中包含成功建立的承载信息,E-RAB建立失败列表消息中包含没有成功建立的承载消息。3)当下行数据达到时,网络侧先对UE进行寻呼,随后UE发起随机接入过程,并发起service request过程。用户面:S-GW向eNB发送承载建立请求,包含(IMSI, QoS, TFT, TEID, LBI等)控制面:MME向eNB发送E-RAB建立请求,包含E-RAB ID,QoS,S-GW TEID。3)在S1接口上建立S1承载,在Uu接口上建立数据无线承载。

qq_44390640的博客 4581

STK新手必看:用700km轨道卫星,5步搞定对地覆盖分析报告

本文为STK新手提供700km轨道卫星对地覆盖分析的5步实操指南,涵盖卫星创建、传感器配置、区域定义、计算设置及报告生成全流程,特别标注常见操作误区与优化技巧,帮助用户快速掌握STK覆盖性分析核心方法。

weixin_42546392的博客 375

PHP中如何实现分页功能?

使用框架内置的分页功能(如Laravel的paginate()方法)以提高开发效率。根据需求自定义分页逻辑,特别是在需要复杂查询或特殊分页规则时。结合前端和后端分页的优点,提供更好的用户体验。注意性能优化和安全性问题,确保系统稳定运行。通过以上方法,可以在PHP分页功能中实现响应式设计,使其能够适应不同设备的显示需求。

破损的天堂鸟博客 1883

基于Web的智能家居(源码+开题)

实践上,智能家居系统的普及和应用将极大改善人们的居住体验,提高生活质量,同时也有助于促进智能家居产业链的发展和完善,为社会经济发展注入新的活力。此外,本研究还将对基于Web的智能家居系统的用户体验进行深入研究,通过用户调研和数据分析,不断优化系统功能和界面设计,提升用户的使用体验和满意度。针对以上问题,本研究将综合运用物联网、云计算、大数据等新一代信息技术,通过系统架构设计、功能模块开发、安全性保障、用户体验优化等多个方面的研究工作,力求为基于Web的智能家居系统的研发和应用提供全面而有效的解决方案。

sryue06的博客 1902

php用类来分页,php自用分页类

很早以前写的了,现整理共享出来。:)相关代码在下面,先发下效果图:下拉列表分页PMA和NORMAL两种模式差别效果图:分页类Page.class.php/*** 本类主要用于实现简单分页* Page.class.php*/class Page{private $page_num; //每页显示的信息条数private $page_all_no; //信息的总条数private $page_len;...

weixin_33967069的博客 325

LightTools 中LCD投影仿真的checkerboard pattern偏振控制技术解析

本文深入解析了在LightTools软件中进行LCD投影仿真时,利用checkerboard pattern(棋盘格图案)结合偏振控制技术来模拟液晶面板像素开关、提升图像对比度的核心方法。文章从实战角度出发,详细拆解了通过设置波片(如1/2波片)和偏振片来操控S光与P光转换的原理,并分享了在LightTools中搭建仿真模型、使用VBA脚本自动化配置参数以提高效率的实用技巧,为光学工程师优化投影系统仿真流程提供了清晰指导。

weixin_29305313的博客 343

Android 13.0 开机启动优化之PMS扫描apk耗时相关功能优化

在android13.0的系统rom定制化开发中,在系统中开发产品时,会根据客户要求内置第三方app,这时如果内置app过多,或者安装的app过多,在系统开机的过程中 在pms扫描安装app的时候,就会比较耗时,这时候就需要优化下pms扫描安装app这块的功能代码,用多线程来实现pms扫描安装app,来加快开机时间,接下来 来实现这个功能

安卓兼职framework和app工程师的博客 1333

php中分页公式,功能强大的php分页函数

分页是每一个程序需要去理解的东西,学习过的几门语言中我发现分页原理都是一样的,下面为php初学者分析一下php分页实现与最后面补充了一个超级强大的分页函数。文章内容分页主要有两个办法:办法一、按字数控制进行分页按字数分页办法简单易用,但效果不好.大致思想:首先、设定每页能容纳的最大字数,然后、计算文章内容的总字数,再由总字数和单页最大字数计算出出总页数,这样整个分页的准备工作就已经做好了.具体到每...

weixin_39751769的博客 523

【GRASS GIS零基础入门教程】2.1:初识GRASS GIS软件

GRASS GIS是一个强大的计算引擎,用于栅格、矢量和地理空间处理。它支持地形和生态系统建模、水文、数据管理和图像处理。通过内置的时态框架和Python API,它可以进行高级时间序列分析和快速地理空间编程,并针对各种硬件配置的大规模分析进行优化。

智慧空间实验室 847

PHP分页函数

<!--google_ad_client = "pub-4490194096475053";/* 内容页,300x250,第一屏 */google_ad_slot = "3685991503";google_ad_width = 300;google_ad_height = 250;//--><script type="text/javascript"src="

管子(zero)的杂乱空间 1272

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

php 获取分页的函数,PHP常用分页函数

PHP常用分页函数//获取动态的分页列表function GetPageListDM($list_len,$listitem="index,end,pre,next,pageno"){global $cfg_rewrite;$prepage = $nextpage = '';$prepagenum = $this->PageNo-1;$nextpagenum = $this->Page...

weixin_42715608的博客 244

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

php分页预览函数,PHP分页函数的简单示例

这篇文章主要为大家详细介绍了PHP分页函数的简单示例,具有一定的参考价值,可以用来参考一下。感兴趣的小伙伴,下面一起跟随512笔记的小编小韵来看看吧!准备数据:新建一个数据库 test执行下面的语句(新建一个表 test :id、sex、name 三个字段)CREATE TABLE `test` (`id` INT( 4 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ...

weixin_35657612的博客 199

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

php封装的分页函数

需要用到sprinf,可参考sprintf官方操作手册 1、封装的分页函数 /** * @param int $page 当前页码 * @param int $total 总页数 * @param string $format 链接模板 * @param int $visible 可见页码数量(可选参数,默认为5) * @retu...

你,若盛开的专栏 399

php查询分页函数,PHP分页函数

已经发了很多PHP分页函数了,不过我仍然要继续发,因为方法不同,也许大家会有用到 //分页函数 functiongenpage(&$sql,$page_size=20) { global$prepage,$nextpage,$pages,$sums;//outparam $page=$_GET["page"]; $eachpage...

weixin_32980943的博客 150

php函数封装完美分页,PHP封装分页函数实现文本分页和数字分页

最近,在项目中要用到分页。分页功能是经常使用的一个功能,所以,对其以函数形式进行了封装。// 分页分装/*** $pageType 分页类型 1是数字分页 2是文本分页* 可以将$pageTotal,$page,$total等数据作为参数传递,或者在paging作为全局变量(推荐)*/function paging($pageType){global $pageTotal,$page,$tot...

weixin_35034536的博客 225

PHP 分页函数

/** * 分页处理函数 * @param int $totalInfo 数据总数 * @param int $currentPage 当前页码数 * @param int $perPageInfo 每页显示条数 * @param integer $showPage 默认显示页码数 * @return string ...

自学it的攻城狮 716

php 函数导航,PHP经典分页导航函数

PHP经典分页导航函数源码: 复制PHP内容到剪贴板PHP代码:#*********************************************************#文件名称: function.php#功能描述: 新闻添加修改处理模块#程序制作:留印(adleyliu)#联系qq :14339095#联系邮箱:[email=adleyliu@163.com]adleyliu@16...

weixin_39958366的博客 115

php分页高亮,php分页函数

/*** 分页函数* by hkshadow* 2011-04-07* Enter description here ...* @param 结果总条数count(); $num* @param 每页条数 $perpage* @param 当前页 $curpage* @param 分页地址$url = 'index.php?' . $para; $mpurl* @param 数字分页数量 $pag...

weixin_33435115的博客 153

php分页函数入门参考

php分页函数入门实例。 <?php /* 需求,建立一个test数据库,在里边建一个test表,里面就 只要id字段,输入一下数据就可以啦。。 由于水平有限,难免出错。。 */ $conn = mysql_connect("localhost","root",""); $maxnum = 2; //每页显示记录条数 mysql_select_db("test", $

my_spring_1999的专栏 451

mysql内置分页函数,php mysql 分页函数

一款超简单的php mysql 分页,也是很实例的一款函数,他可以自动获取用户增加的参数,而不需要用户来增加,很自能化的一款自能分页程序。+-----------------------------------------------------------------------| 文件概要:分页显示函数| 文件名称:page.php| 创建时间:2010-5-20+--------------...

weixin_35410644的博客 169

php加mysql分页_php mysql 分页函数

一款超简单的php mysql 分页,也是很实例的一款函数,他可以自动获取用户增加的参数,而不需要用户来增加,很自能化的一款自能分页程序。-----------------------------------------------------------------------|文件概要:分页显示函数|文件名称:page.php|创建时间:2010-5-20----------------...

weixin_39943992的博客 132
上一篇: 最新php
下一篇: 完全讲解PHP+MySQL的分页显示示例分析
hn3e21
博客等级 码龄17年 9粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值