不积跬步无以至千里

记录精彩的程序人生

  • 首页
  • Java
  • Golang
  • PHP
  • Python
  • Nodejs
  • Lua
  • Docker
  • DevOps
  • 文章归档
  • 默认分类
  • 关于
  • 标签

  • 搜索
PostgreSQL hbase 时间同步 nexus 开机启动 nexus, 开机启动 jenkins安装配置 gitlab安装配置 gitlab安装 文件系统 fastdfs gcc切换 gcc升级 mysql8 交换空间 虚拟内存 tcp thrift lua tag test VPN SoftEtherVPN homebrew asm spring tomcat maven jdk ios mac 图案字符 figlet mysql半同步复制 mysql主从同步 一主多从 一主一从 主从同步 反向代理 密码重置 test 虚拟机扩容 swap 虚拟空间 docker ldocker grpc-gateway protobuf 微服务 go grp GRPC 授权登录 OAuth2.0 SOA supervisord supervisor RPC CentOS rabbitmq 环境变量 php-fpm php.ini error php7 lnmp 编译安装 mysql nginx linux java php python redis 字符串操作 mysql5.7 Solo

PHP分页实用函数

发表于 2019-08-27 | 分类于 默认分类 | 0 | 阅读次数 1331

自动适应范围的页码分页程序
也就是说,页码格式如下
<< < 1 2 3 4 5 6 7 > >>
<< < 6 7 8 9 10 11 12 > >>
<?php
/*

  • author:php100.com 论坛 nicholas_ng
    /
    function page($page,$total,$phpfile,$pagesize=3,$pagelen=3){
    $pagecode = '';//定义变量,存放分页生成的HTML
    $page = intval($page);//避免非数字页码
    $total = intval($total);//保证总记录数值类型正确
    if(!$total) return array();//总记录数为零返回空数组
    $pages = ceil($total/$pagesize);//计算总分页
    //处理页码合法性
    if($page<1) $page = 1;
    if($page>$pages) $page = $pages;
    //计算查询偏移量
    $offset = $pagesize
    ($page-1);
    //页码范围计算
    $init = 1;//起始页码数
    $max = $pages;//结束页码数
    $pagelen = ($pagelen%2)?$pagelen:$pagelen+1;//页码个数
    $pageoffset = ($pagelen-1)/2;//页码个数左右偏移量

//生成html
$pagecode='<div>';
$pagecode.="<span>$page/$pages</span>";//第几页,共几页
//如果是第一页,则不显示第一页和上一页的连接
if($page!=1){
$pagecode.="<a href="{$phpfile}?page=1"><<</a>";//第一页
$pagecode.="<a href="{$phpfile}?page=".($page-1).""><</a>";//上一页
}
//分页数大于页码个数时可以偏移
if($pages>$pagelen){
//如果当前页小于等于左偏移
if($page<=$pageoffset){
$init=1;
$max = $pagelen;
}else{//如果当前页大于左偏移
//如果当前页码右偏移超出最大分页数
if($page+$pageoffset>=$pages+1){
$init = $pages-$pagelen+1;
}else{
//左右偏移都存在时的计算
$init = $page-$pageoffset;
$max = $page+$pageoffset;
}
}
}
//生成html
for($i=$init;$i<=$max;$i++){
if($i==$page){
$pagecode.='<span>'.$i.'</span>';
} else {
$pagecode.="<a href="{$phpfile}?page={$i}">$i</a>";
}
}
if($page!=$pages){
$pagecode.="<a href="{$phpfile}?page=".($page+1)."">></a>";//下一页
$pagecode.="<a href="{$phpfile}?page={$pages}">>></a>";//最后一页
}
$pagecode.='</div>';
return array('pagecode'=>$pagecode,'sqllimit'=>' limit '.$offset.','.$pagesize);
}
?>
===========PHP100提供======演示================

<?php
$phpfile = 'index.php';//页面文件名
$page= isset($_GET['page'])?$_GET['page']:1;//默认页码
$db = mysql_connect('localhost','test','test');//链接数据库
mysql_select_db('test',$db);//选择数据库
$counts = mysql_num_rows(mysql_query('select id from test',$db));//获取需要的数据总条数
$sql='select id,title from test';//定义查询语句SQL
$getpageinfo = page($page,$counts,$phpfile);//调用函数,生成分页HTML 和 SQL LIMIT 子句
$sql.=$getpageinfo['sqllimit'];//组合完整的SQL语句
$data = $row = array();//初始化数组
$result = mysql_query($sql,$db);//获取结果集
//将数据装入$data数组
while($row = mysql_fetch_array($result)){
$data[]=$row;
}
?>
<?php
echo $getpageinfo['pagecode'];//显示分页的html代码
?>

PHP数组的使用方法
PHP中::、->、self、$this操作符的区别
  • 文章目录
  • 站点概览
ken

ken

记录精彩的程序人生

498 日志
9 分类
77 标签
RSS
Creative Commons
Links
  • 酷壳
0%
© 2010 — 2026 ken
由 Halo 强力驱动
鄂ICP备18013899号-1