PHP分页效率终结版(推荐)

这里仅展示出设计思路,具体安全问题,是否同步更新等可根据具体需求添加修改:
以前人们常用的PHP分页技术,通常都需要先统计出数据库中总信息条数才能判断出总页数并对其进行分页,,也就是说,每次分页要对数据库进行两次调用,在面临大数据量,高并发查询情况下是很不效率的,曾经一直为这个问题烦恼但都没想到合适的解决方法,今天突然在睡梦中 遇见奇迹...具体分析原理如下:(红色部分为优化后的区别,思路采用最原始的代码书写,为了照顾新人)
原始分页技术:包括许多开源程序也在使用的技术;
一般都是对数据库信息进行统计,然后调用分页类,进行分页,,每次都要经过2次数据库查询操作
例(原始分页技术):  每次都要进行2次数据库查询


代码如下:

$sqlstr="select  count(*)  as total  from  tablename";
    $sql=mysql_query($sql) or die("error");
 $info=mysql_fetch_array($sql);  //第一次 数据库调用
    $total=$info["total"];//每次翻页都要进行 总信息条数 的数据库查询操作
    $pagesize=10; //每页显示数量
    $page=$_GET["page"]?max(intval($_GET["page"]),1):1;//当前页
    if($total){,
      $sql="select * from  tablename  limit "($page-1)*$pagesize",$pagesize";
      $sql=mysql_query($sql) or die("error");//第二次数据库查询操作
      $info=mysql_fetch_array($sql);
   do{
    ...............
            }while($info=mysql_fetch_array($sql));
            include("page_class.php");//调用分页类
            $url="url.php?page=" //假设当前页为 URL.PHP
            echo $get_page=new get_page($url,$total,$pagesize,$page); //URL 为要分页的URL地址
   }
   //优化后的分页技术(只需在第一次调用时进行信息统计即可)
    if(isset($_GET["total"])){   //只需要进行一次总信息条数的统计即可
   $total=intval($_GET["total"]);
 //以后的的总信息数量通过GET传递即可,节省了1/2的数据库负荷,,,,
    }else{
      $sqlstr="select  count(*)  as total  from  tablename";
      $sql=mysql_query($sql) or die("error");
   $info=mysql_fetch_array($sql);  //第一次 数据库调用
            $total=$info["total"];
    }//总信息条数
    $pagesize=10; //每页显示数量
    $page=$_GET["page"]?max(intval($_GET["page"]),1):1;//当前页
    if($total){
      $sql="select * from  tablename  limit "($page-1)*$pagesize",$pagesize";
      $sql=mysql_query($sql) or die("error");//第二次数据库查询操作
      $info=mysql_fetch_array($sql);
   do{
    ...............
            }while($info=mysql_fetch_array($sql));
            include("page_class.php");//调用分页类
   $url="url.php?total=$total&page=" //假设当前页为 URL.PHP
            echo $get_page=new get_page($url,$total,$pagesize,$page); //URL 为要分页的URL地址
   }

(0)

相关推荐

  • 仿Aspnetpager的一个PHP分页类代码 附源码下载

    基本逻辑思路和.net的一样,就是将通过实体类来进行配置换成了通过数组进行配置,逻辑比较简单,根据条件判断拼接分页html. 有以下几个简单的功能: 1:支持相关按钮的显示与否配置 2:支持每页数目,文本名称,html标签类名称的自由配置 3:支持url重写过的页面(需自己在配置数组中添加重写规则) 简单吧,还是直接上代码: 核心代码:pager.class.php 复制代码 代码如下: <?php class pager{ //分页的参数配置 private $config=array( //

  • php分页思路以及在ZF中的使用

    只需要得到两个变量就成功了一半: 每页要显示的记录数$pageSize 表中总的数据量 $rowCount 有了以上两个变量,我们就可以得出 共有几页了$pageCount 然后通过for循环,比如总共有13个页面,那么很容易就能通过for循环输出页数 复制代码 代码如下: $nav='';//用来保存页数的一个变量 for ($i=1;$i<=13;$i++) { $nav.="<a href='index.php?page=".$i."'>第"

  • 实用的简单PHP分页集合包括使用方法

    方法一: 复制代码 代码如下: <?php    /*    分页类 用于实现对多条数据分页显示     version:1.0    Date:2013-10-20    */ /*        调用非常方便,先连接好数据库,直接传人查询的sql字符串即可,也可以指定每页显示的数据条数        例如$pages = new Page('SELECT * FROM `zy_common_member`');        或  $pages = new Page('SELECT * FR

  • php 解决旧系统 查出所有数据分页的类

    添加了几个自定义的 从mysql result 集合中 抽取指定片段的方法 , 没有调用释放的原因 这个涉及到 程序的 原来校验 也多亏网上大神的帮助啊 .... 老系统害死人啊, 后台都不能动 复制代码 代码如下: <?php /* 分页类 * @author xiaojiong & 290747680@qq.com * @date 2011-08-17 * * show(2) 1 ... 62 63 64 65 66 67 68 ... 150 * 分页样式 * #page{font:1

  • PHP 文本文章分页代码 按标记或长度(不涉及数据库)

    实例代码: 复制代码 代码如下: <?php /** * ********************************************************** * Read Me * 文章分页 * * 分页方式,可以按字数分页,按换行分页,按特殊标记分页等 * 其实实现思路是一样的,只是将其按一定规律放入一个数组 * 然后根据 url 传入的参数取得某个片段即可 * 大家完全可以写一个功能强大的函数保存起来以备不时之需 * * 题外话:很多编辑器都有插入分页按钮,利用插入的代码可

  • PHP分页详细讲解(有实例)

    1.前言分页显示是一种非常常见的浏览和显示大量数据的方法,属于web编程中最常处理的事件之一.对于web编程的老手来说,编写这种代码实在是和呼吸一样自然,但是对于初学者来说,常常对这个问题摸不着头绪,因此特地撰写此文对这个问题进行详细的讲解,力求让看完这篇文章的朋友在看完以后对于分页显示的原理和实现方法有所了解.本文适合初学者阅读,所有示例代码均使用php编写.2.原理所谓分页显示,也就是将数据库中的结果集人为的分成一段一段的来显示,这里需要两个初始的参数:每页多少条记录($PageSize)?

  • php开发分页实现代码第1/3页

    项目结构: 运行效果: conn.php 复制代码 代码如下: <?php $conn = @ mysql_connect("localhost", "root", "") or die("数据库链接错误"); mysql_select_db("form", $conn); mysql_query("set names 'GBK'"); //使用GBK中文编码; //替换空格,回车

  • 精美漂亮的php分页类代码

    这是一款简单,方便,功能齐全的分页类,可以根据自己的需要更改CSS样式文件以实现分页颜色的控制,利用php分页类,可以省去自己很多时间,只需要在分页的地方嵌入即可,下面看下使用方法: 1,在head里包含pager.css 复制代码 代码如下: <link href="pager.css" type="text/css" rel="stylesheet" /> 2,在分页处进行类的实例化: 复制代码 代码如下: <?php   

  • php分页代码学习示例分享

    复制代码 代码如下: <?php     header("content-type:text/html;charset=utf-8");    //数据库连接    $conn = mysql_connect("localhost", "root", "111") or die("not connnected : ".mysql_error());    mysql_select_db("t

  • php实现分页工具类分享

    代码: 复制代码 代码如下: /**    * 把中间的看成一个可以滑动的固定长度的尺子    *    * 把$this->_totalShowPages 当成一个可以滑动的固定长度尺子,    * 然后$this->_totalPages就是一个给定长度的木块,尺子在这个    * 木块上滑动.情况两种:    * 1. 尺子长度大于木块长度,那么就直接输出所有的页码:    * 2. 尺子长度小于木块长度,那么就只用找到输出这个尺子长度页    * 数的起始点--$start, $end

  • thinkphp 一个页面使用2次分页的实现方法

    可以说是毫无技术含量的办法:将Page.class.php复制重命名一个,如nPage.class.php.并在nPage.calss.php中将$this->varPage=C('VAR_PAGE')?C('VAR_PAGE'):'p'改为$this->varPage=C('VAR_PAGE')?C('VAR_PAGE'):'np'当然类名也记得要改为nPage.class.php,然后就在php里直接引用这个类分页,就不会和原来的冲突了--

  • 使用PHP+JQuery+Ajax分页的实现

    为了锻炼下JQuery,决定自己动手写写分页 最终的效果如图: 点击某个字母后,下方显示以该字母为首字母的所有词语: 分页显示,每页显示15个词语,每组页码有20个,1-20/20-40--- 首先是在PHP文件中的分页Pager的相关代码 复制代码 代码如下: public function searchWordsByInitial() {               //从AJAX发出的URL中获得参数:用户点击的字母和点击的页码            $initial = htmlenti

  • 用php制作简单分页(从数据库读取记录)的方法详解

    PHP新手,一直想做一下分页都给忘了,今天有幸被提醒所以网上搜了一下.有些写的看不懂也没怎么去看.最后找到一个比较简单的. 大致的思想就是: 1.设置每页要显示的最大记录数. 2.计算出页面总数 3.当前页面跟总页面数比较改变连接的状态 4.用limit控制从数据库中读取记录 下面是代码: 复制代码 代码如下: $conn = mysql_connect('localhost','root','');            mysql_select_db('db_BookStore',$conn

  • php中长文章分页显示实现代码

    欢迎交流!实现代码如下: 复制代码 代码如下: <?php include('include/config.php'); ?> <?php /** *Author:乌鸟heart *实现长文章分页的代码 *原理: *利用一个数组来记录文章每一页(用p0.p1.p2...做手动标记)的起始字节数,然后通过利用php函数操作这个数组去显示分页后的文章.分页显示,传递ptag(与tag的值一样)值. *利用到的php函数: *1.strlen("字符串") - Return

  • PHP动态分页函数,PHP开发分页必备啦

    贴代码: 复制代码 代码如下: /** * 分页函数 * * @param int $count 条目总数 * @param int $perlogs 每页显示条数目 * @param int $page 当前页码 * @param string $url 页码的地址 */ function pagination($count,$perlogs,$page,$url,$anchor=''){ $pnums = @ceil($count / $perlogs); $re = ''; $urlHom

  • 一个简单且很好用的php分页类

    复制代码 代码如下: class Page {    // 分页栏每页显示的页数    public $rollPage = 6;    // 页数跳转时要带的参数    public $parameter  ;    // 默认列表每页显示行数    public $listRows = 20;    // 起始行数    public $firstRow ;    // 分页总页面数    protected $totalPages  ;    // 总行数    protected $to

  • 无JS,完全php面向过程数据分页实现代码

    复制代码 代码如下: <?php //登陆页面设置的session,当session中存在name时 //session_start(); //$name = $_SESSION['name']; //if (empty($name)){ // header("Location: error.php"); // exit(); //} //面向过程, 数据分页显示 if(false!=($mysql = mysql_connect('本地mysql', 'mysql用户名', '

  • 学习php分页代码实例

    PHP分页有很多方法,今天我们就用一个小例子演示一下这个功能. 复制代码 代码如下: $result = "<div class=\"page-num\"><ul class=\"fn-clear\">"; // 上一页    if ($offset>0) {        $result .= "<li>            <a href=\"".$url.'of

随机推荐