热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PHP中常用的分页类总结

分页是目前在显示大量结果时所采用的最好的方式。有了下面这些代码的帮助,开发人员可以在多个页面中显示大量的数据。在互联网上,分页是一般用于搜索结果或是浏览全部信息php基本分页&l

分页是目前在显示大量结果时所采用的最好的方式。有了下面这些代码的帮助,开发人员可以在多个页面中显示大量的数据。在互联网上,分页是一般用于搜索结果或是浏览全部信息

php基本分页

 $totalpages) {
    // set current page to last page
    $currentpage = $totalpages;
} // end if
// if current page is less than first page...
if ($currentpage < 1) {
    // set current page to first page
    $currentpage = 1;
} // end if
// the offset of the list, based on current page
$offset = ($currentpage - 1) * $rowsperpage;
// get the info from the db
$sql = "SELECT id, number FROM numbers LIMIT $offset, $rowsperpage";
$result = mysql_query($sql, $conn) or trigger_error("SQL", E_USER_ERROR);
// while there are rows to be fetched...
while ($list = mysql_fetch_assoc($result)) {
    // echo data
    echo $list[&#39;id&#39;] . " : " . $list[&#39;number&#39;] . "";
} // end while
/****** build the pagination links ******/
// range of num links to show
$range = 3;
// if not on page 1, don&#39;t show back links
if ($currentpage > 1) {
    // show << link to go back to page 1
    echo " << ";
    // get previous page num
    $prevpage = $currentpage - 1;
    // show < link to go back to 1 page
    echo " < ";
} // end if
// loop to show links to range of pages around current page
for ($x = ($currentpage - $range); $x < (($currentpage + $range) + 1); $x++) {
    // if it&#39;s a valid page number...
    if (($x > 0) && ($x <= $totalpages)) {
        // if we&#39;re on current page...
        if ($x == $currentpage) {
            // &#39;highlight&#39; it but don&#39;t make a link
            echo " [$x] ";
            // if not current page...
            
        } else {
            // make it a link
            echo " $x ";
        } // end else
        
    } // end if
    
} // end for
// if not on last page, show forward and last page links
if ($currentpage != $totalpages) {
    // get next page
    $nextpage = $currentpage + 1;
    // echo forward link for next page
    echo " > ";
    // echo forward link for lastpage
    echo " >> ";
} // end if
/****** end build pagination links ******/
?>

先看一个常用的php分页类

 1) {
    $pagination.= "";
    //previous button
    if ($page > 1) $pagination.= " previous";
    else $pagination.= " previous";
    //pages
    if ($lastpage < 7 + ($adjacents * 2)) //not enough pages to bother breaking it up
    {
        for ($counter = 1; $counter <= $lastpage; $counter++) {
            if ($counter == $page) $pagination.= "$counter";
            else $pagination.= "$counter";
        }
    } elseif ($lastpage > 5 + ($adjacents * 2)) //enough pages to hide some
    {
        //close to beginning; only hide later pages
        if ($page < 1 + ($adjacents * 2)) {
            for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++) {
                if ($counter == $page) $pagination.= "$counter";
                else $pagination.= "$counter";
            }
            $pagination.= "...";
            $pagination.= "$lpm1";
            $pagination.= "$lastpage";
        }
        //in middle; hide some front and some back
        elseif ($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2)) {
            $pagination.= "1";
            $pagination.= "2";
            $pagination.= "...";
            for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++) {
                if ($counter == $page) $pagination.= "$counter";
                else $pagination.= "$counter";
            }
            $pagination.= "...";
            $pagination.= "$lpm1";
            $pagination.= "$lastpage";
        }
        //close to end; only hide early pages
        else {
            $pagination.= "1";
            $pagination.= "2";
            $pagination.= "...";
            for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++) {
                if ($counter == $page) $pagination.= "$counter";
                else $pagination.= "$counter";
            }
        }
    }
    //next button
    if ($page < $counter - 1) $pagination.= "next ";
    else $pagination.= "next ";
    $pagination.= "
n"; } ?>     实例 totalNum = $count; //总记录数         $this->pageSize = $size; //每页大小         $this->pageNo = $pageNo;         //计算总页数         $this->pageCount = ceil($this->totalNum / $this->pageSize);         $this->pageCount = ($this->pageCount <= 0) ? 1 : $this->pageCount;         //检查pageNo         $this->pageNo = $this->pageNo == 0 ? 1 : $this->pageNo;         $this->pageNo = $this->pageNo > $this->pageCount ? $this->pageCount : $this->pageNo;         //计算偏移         $this->offset = ($this->pageNo - 1) * $this->pageSize;         //计算是否有上一页下一页         $this->hasPrePage = $this->pageNo == 1 ? false : true;         $this->hasNextPage = $this->pageNo >= $this->pageCount ? false : true;         $this->pageData = $pageData;         $this->jsFunction = $jsFunction;     }     /**      * 分页算法      * @return      */     private function generatePageList() {         $pageList = array();         if ($this->pageCount <= 9) {             for ($i = 0; $i < $this->pageCount; $i++) {                 array_push($pageList, $i + 1);             }         } else {             if ($this->pageNo <= 4) {                 for ($i = 0; $i < 5; $i++) {                     array_push($pageList, $i + 1);                 }                 array_push($pageList, -1);                 array_push($pageList, $this->pageCount);             } else if ($this->pageNo > $this->pageCount - 4) {                 array_push($pageList, 1);                 array_push($pageList, -1);                 for ($i = 5; $i > 0; $i--) {                     array_push($pageList, $this->pageCount - $i + 1);                 }             } else if ($this->pageNo > 4 && $this->pageNo <= $this->pageCount - 4) {                 array_push($pageList, 1);                 array_push($pageList, -1);                 array_push($pageList, $this->pageNo - 2);                 array_push($pageList, $this->pageNo - 1);                 array_push($pageList, $this->pageNo);                 array_push($pageList, $this->pageNo + 1);                 array_push($pageList, $this->pageNo + 2);                 array_push($pageList, -1);                 array_push($pageList, $this->pageCount);             }         }         return $pageList;     }     /***      * 创建分页控件      * @param      * @return String     */     public function echoPageAsDiv() {         $pageList = $this->generatePageList();         $pageString = "";         if (!empty($pageList)) {             if ($this->pageCount > 1) {                 if ($this->hasPrePage) {                     $pageString = $pageString . "jsFunction . "(" . ($this->pageNo-1) . ") ">上一页";                 }                 foreach ($pageList as $k => $p) {                     if ($this->pageNo == $p) {                         $pageString = $pageString . "" . $this->pageNo . "";                         continue;                     }                     if ($p == - 1) {                         $pageString = $pageString . "...";                         continue;                     }                     $pageString = $pageString . "jsFunction . "(" . $p . ")\">" . $p . "";                 }                 if ($this->hasNextPage) {                     $pageString = $pageString . "jsFunction . "(" . ($this->pageNo + 1) . ")\">下一页";                 }             }         }         $pageString = $pageString . ("
");         return $pageString;     } } ?>

css代码

在php页面中的调用方法

echoPageAsDiv();


随意转载^^但请附上教程地址。


推荐阅读
  • 我们在对1、模板的由来在没有模板技术之前,使用PHP开发程序,通常都是php代码和html混编在一起。比如说新闻列表,很可能就是一个newslist.php页面,结构如下:&lt ... [详细]
  • 在尝试从数据库获取设置的过程中,遇到了一个致命错误:Fatal error: Call to a member function bind_param() on boolean。本文将详细分析该错误的原因,并提供解决方案。 ... [详细]
  • PHP+Mysql是一个最经常使用的黄金搭档,它们俩配合使用,能够发挥出最佳性能,当然,如果配合Apache使用,就更加Perfect了。因此,需要做好对mysql的查询优化。下面 ... [详细]
  • Python包管理工具pip的使用指南
    本文详细介绍了如何使用pip进行Python包的安装、管理和常见问题的解决方法,特别针对国内用户提供了优化建议。 ... [详细]
  • 本文详细介绍了 phpMyAdmin 的安装与配置方法,适用于多个版本的 phpMyAdmin。通过本教程,您将掌握从下载到部署的完整流程,并了解如何根据不同的环境进行必要的配置调整。 ... [详细]
  • 优化Flask应用的并发处理:解决Mysql连接过多问题
    本文探讨了在Flask应用中通过优化后端架构来应对高并发请求,特别是针对Mysql 'too many connections' 错误的解决方案。我们将介绍如何利用Redis缓存、Gunicorn多进程和Celery异步任务队列来提升系统的性能和稳定性。 ... [详细]
  • 本文将详细介绍如何在没有显示器的情况下,使用Raspberry Pi Imager为树莓派4B安装操作系统,并进行基本配置,包括设置SSH、WiFi连接以及更新软件源。 ... [详细]
  • 本文深入探讨了MySQL中常见的面试问题,包括事务隔离级别、存储引擎选择、索引结构及优化等关键知识点。通过详细解析,帮助读者在面对BAT等大厂面试时更加从容。 ... [详细]
  • 配置PHPStudy环境并使用DVWA进行Web安全测试
    本文详细介绍了如何在PHPStudy环境下配置DVWA( Damn Vulnerable Web Application ),并利用该平台进行SQL注入和XSS攻击的练习。通过此过程,读者可以熟悉常见的Web漏洞及其利用方法。 ... [详细]
  • docker镜像重启_docker怎么启动镜像dock ... [详细]
  • 开发笔记:由数据库某字段存数组引发的json_encode/serialize思考
    开发笔记:由数据库某字段存数组引发的json_encode/serialize思考 ... [详细]
  • MySQL Debug 模式的实现与应用
    本文详细介绍了如何启用和使用 MySQL 的调试模式,包括编译选项、环境变量配置以及调试信息的解析。通过实际案例展示了如何利用调试模式解决客户端无法连接服务器的问题。 ... [详细]
  • 如何从python读取sql[mysql基础教程]
    从python读取sql的方法:1、利用python内置的open函数读入sql文件;2、利用第三方库pymysql中的connect函数连接mysql服务器;3、利用第三方库pa ... [详细]
  • 下文来给各位整理了一些Yii的CDbCriteria查询条件例子,希望这些例子可以帮助到各位同学。这篇就是Yii中使用CDbCriteria方法来进行查询的各种条件:$criteria&a ... [详细]
  • 我们也许对如果原有数组本身已经被重新排序过,那么在数组合并完成以后,你必须针对产生出来的新数组重新再排序一次。下面这个范例就介绍PHP函数array_merge()的使用方式:<?&am ... [详细]
author-avatar
村头的小路_157
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有