首页 后端开发 php教程 分页原理是什么

分页原理是什么

May 31, 2018 am 11:33 AM
分页 原理 是什么

数据分页需要以下几个条件:

 1. 参与分页的总条数 【$msg_count】 ,该值通过数据库查询可以获取到;

 2. 每页显示的条数【$pagesize】 ,这个数值由自己定义;

 3. 当前页的页码数 【$page】,该数值通过地址栏传递和接收;

 4. 可以通过以上资料计算出总页数 【$pagecount】 ,此处需要借助ceil();

  【$pagecount = ceil($msg_count/$pagesize);】

 5. 数据库查询借助sql语句中的【limit】来实现数据的变化:

  例如:

  select * from 表名 where 条件 limit $startnum , $pagesize;

  而$startnum = ($page-1)*$pagesize;

实例:

/**
 * 取得上次的过滤条件
 * @param   string  $param_str  参数字符串,由list函数的参数组成
 * @return  如果有,返回array('filter' => $filter, 'sql' => $sql);否则返回false
 */
function get_filter($param_str = '')
{
    $filterfile = basename(PHP_SELF, '.php');//string basename ( string $path [, string $suffix ] )                             返回路径中的文件名部分如果文件名是以 suffix 结束的,那这一部分也会被去掉。 
    if ($param_str)
    {
        $filterfile .= $param_str;
    }
    if (isset($_GET['uselastfilter']) && isset($_COOKIE['ECSCP']['lastfilterfile'])
        && $_COOKIE['ECSCP']['lastfilterfile'] == sprintf('%X', crc32($filterfile)))
    {
        return array(
            'filter' => unserialize(urldecode($_COOKIE['ECSCP']['lastfilter'])),
            'sql'    => base64_decode($_COOKIE['ECSCP']['lastfiltersql'])
        );
    }
    else
    {
        return false;
    }
}
登录后复制
/**
 * 保存过滤条件
 * @param   array   $filter     过滤条件
 * @param   string  $sql        查询语句
 * @param   string  $param_str  参数字符串,由list函数的参数组成
 */
function set_filter($filter, $sql, $param_str = '')
{
    $filterfile = basename(PHP_SELF, '.php');
    if ($param_str)
    {
        $filterfile .= $param_str;
    }
    setcookie('ECSCP[lastfilterfile]', sprintf('%X', crc32($filterfile)), time() + 600);
    setcookie('ECSCP[lastfilter]',     urlencode(serialize($filter)), time() + 600);
    setcookie('ECSCP[lastfiltersql]',  base64_encode($sql), time() + 600);
}
登录后复制
/**
 * 供货商资源管理
 * @param    bool    $is_pagtion
 * @return    array   $arr
 */
function suppliers_resource_manage($is_pagtion=true)
{
    global $db,$ecs;
    $result = get_filter();
    if ($result === false)
    {
        $aiax = isset($_GET['is_ajax']) ? $_GET['is_ajax'] : 0;
        /* 过滤信息 */
        $filter['sort_by'] = empty($_REQUEST['sort_by']) ? 'r.resource_id' : trim($_REQUEST['sort_by']);
        $filter['sort_order'] = empty($_REQUEST['sort_order']) ? 'DESC' : trim($_REQUEST['sort_order']);
        $filter['resource_id'] = empty($_REQUEST['resource_id'])  ? '' : $_REQUEST['resource_id'];
        $filter['admin_name'] = empty($_REQUEST['admin_name'])  ? '' : trim($_REQUEST['admin_name']);
        $filter['resource_name'] = empty($_REQUEST['resource_name'])  ? '' : trim($_REQUEST['resource_name']);
        $filter['admin_id']  = isset($_REQUEST['admin_id'])?intval($_REQUEST['admin_id']):'-1';
        $filter['resource_type'] = empty($_REQUEST['resource_type']) ? '-1' : intval($_REQUEST['resource_type']);
        $filter['resource_status'] = empty($_REQUEST['resource_status']) ? '-1' : intval($_REQUEST['resource_status']);
        $filter['resource_rank'] = empty($_REQUEST['resource_rank']) ? '-1' : intval($_REQUEST['resource_rank']);
        $filter['resource_key'] = empty($_REQUEST['resource_key'])  ? '' : trim($_REQUEST['resource_key']);
        $filter['menuid'] = 7; 
        $where = 'WHERE 1 ';
        /* 分页大小 */
        $filter[&#39;page&#39;] = empty($_REQUEST[&#39;page&#39;]) || (intval($_REQUEST[&#39;page&#39;]) <= 0) ? 1 : intval($_REQUEST[&#39;page&#39;]);

        if (isset($_REQUEST[&#39;page_size&#39;]) && intval($_REQUEST[&#39;page_size&#39;]) > 0)
        {
            $filter[&#39;page_size&#39;] = intval($_REQUEST[&#39;page_size&#39;]);
        }
        elseif (isset($_COOKIE[&#39;ECSCP&#39;][&#39;page_size&#39;]) && intval($_COOKIE[&#39;ECSCP&#39;][&#39;page_size&#39;]) > 0)
        {
            $filter[&#39;page_size&#39;] = intval($_COOKIE[&#39;ECSCP&#39;][&#39;page_size&#39;]);
        }
        else

        {
            $filter[&#39;page_size&#39;] = 15;
        }
        
        if(!empty($filter[&#39;resource_id&#39;]))
        {
            $resource_id = $filter[&#39;resource_id&#39;] == -1 ? 0 : $filter[&#39;resource_id&#39;];
            $where .= " and r.resource_id=&#39;".$resource_id."&#39;";
        }
        if($filter[&#39;resource_name&#39;]){
            $where .= " AND r.resource_name like &#39;%".mysql_like_quote($filter[&#39;resource_name&#39;])."%&#39; ";
        }
        if($filter[&#39;admin_id&#39;] > -1)
        {
            $where .= " AND r.admin_id = &#39;".$filter[&#39;admin_id&#39;]."&#39; ";
        }
        if ($filter[&#39;resource_type&#39;] > -1) 
        {
            $where .= " AND r.resource_type = &#39;" . $filter[&#39;resource_type&#39;] . "&#39;";
        }
        if ($filter[&#39;resource_status&#39;] > -1) 
        {
            $where .= " AND r.resource_status = &#39;" . $filter[&#39;resource_status&#39;] . "&#39;";
        }
        if ($filter[&#39;resource_rank&#39;] > -1) 
        {
            $where .= " AND r.resource_rank = &#39;" . $filter[&#39;resource_rank&#39;] . "&#39;";
        }
        if($filter[&#39;resource_key&#39;]){
            $where .= " AND r.remark like &#39;%".mysql_like_quote($filter[&#39;resource_key&#39;])."%&#39; ";
        }
        /* 记录总数 */
        $sql = "SELECT COUNT(r.resource_id) FROM " . $ecs->table(&#39;suppliers_resource&#39;)." as r 
                    LEFT JOIN ".$ecs->table(&#39;admin_user&#39;) . " as u
                        ON u.user_id = r.admin_id  " . $where;
        $filter[&#39;record_count&#39;]   = $db->getOne($sql);
        $filter[&#39;page_count&#39;]     = $filter[&#39;record_count&#39;] > 0 ? ceil($filter[&#39;record_count&#39;] / $filter[&#39;page_size&#39;]) : 1;
        /* 查询 */
        $sql = "SELECT r.resource_id, u.user_name as admin_name, r.resource_name, r.resource_link, r.resource_type, r.resource_status, r.resource_rank, r.remark, r.add_time FROM " . $ecs->table(&#39;suppliers_resource&#39;) . " as r 
                    LEFT JOIN " . $ecs->table(&#39;admin_user&#39;) . " as u ON u.user_id = r.admin_id  " . $where;

        $sort_by  = $filter[&#39;sort_by&#39;];
        $sort_order = $filter[&#39;sort_order&#39;];
        $sql .="GROUP BY r.resource_id ORDER BY " . $sort_by . " " . $sort_order;
        if($is_pagtion)
        {
            $sql .=" LIMIT ".($filter[&#39;page&#39;] - 1)*$filter[&#39;page_size&#39;].",".$filter[&#39;page_size&#39;];
        }
        set_filter($filter, $sql);
    }
    else
    {
        $sql    = $result[&#39;sql&#39;];
        $filter = $result[&#39;filter&#39;];
    }
    $query=$sql;

    $row = $db->getAll($sql);
    /* 格式话数据 */
    foreach ($row AS $key => $value)
    {   
        if ($row[$key][&#39;resource_type&#39;] == 1) {
            $row[$key][&#39;resource_type&#39;] = &#39;中模&#39;;
        }elseif ($row[$key][&#39;resource_type&#39;] == 2) {
            $row[$key][&#39;resource_type&#39;] = &#39;泳装&#39;;
        }elseif ($row[$key][&#39;resource_type&#39;] == 3) {
            $row[$key][&#39;resource_type&#39;] = &#39;阿里&#39;;
        }elseif ($row[$key][&#39;resource_type&#39;] == 2) {
            $row[$key][&#39;resource_type&#39;] = &#39;17网&#39;;
        }
        if ($row[$key][&#39;resource_status&#39;] == 1) {
            $row[$key][&#39;resource_status&#39;] = &#39;已审核&#39;;
        }elseif ($row[$key][&#39;resource_status&#39;] == 2) {
            $row[$key][&#39;resource_status&#39;] = &#39;已弃用&#39;;
        }
        if ($row[$key][&#39;resource_rank&#39;] == 1) 
        {
            $row[$key][&#39;resource_rank&#39;] = &#39;A&#39;;
        }elseif ($row[$key][&#39;resource_rank&#39;] == 2) {
            $row[$key][&#39;resource_rank&#39;] = &#39;B&#39;;
        }elseif ($row[$key][&#39;resource_rank&#39;] == 3) {
            $row[$key][&#39;resource_rank&#39;] = &#39;C&#39;;
        }
        if(strpos($row[$key][&#39;resource_link&#39;], &#39;http://&#39;) === false)
        {
            if (strpos($row[$key][&#39;resource_link&#39;], &#39;https://&#39;) === false) 
            {
                $row[$key][&#39;resource_link&#39;] = substr_replace($row[$key][&#39;resource_link&#39;], &#39;http://&#39;, 0, 0);
            }
        }
    }
    $arr = array(&#39;result&#39; => $row, &#39;filter&#39; => $filter, &#39;page_count&#39; => $filter[&#39;page_count&#39;], &#39;record_count&#39; => $filter[&#39;record_count&#39;],&#39;query&#39;=>$query);
    return $arr;
}
登录后复制

相关推荐:

php中关于分页原理的实例

php 分页原理详解

以上是分页原理是什么的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

请问ccsvchst.exe是哪种进程? 请问ccsvchst.exe是哪种进程? Feb 19, 2024 pm 11:33 PM

ccsvchst.exe是一种常见的进程文件,它是SymantecEndpointProtection(SEP)软件的一部分,而SEP则是一款由著名的网络安全公司Symantec开发的终端保护解决方案。作为该软件的一部分,ccsvchst.exe负责管理和监控SEP的相关进程。首先,我们来了解一下SymantecEndpointProtection(

nohup的作用及原理解析 nohup的作用及原理解析 Mar 25, 2024 pm 03:24 PM

nohup的作用及原理解析在Unix和类Unix操作系统中,nohup是一个常用的命令,用于在后台运行命令,即便用户退出当前会话或关闭终端窗口,命令仍然能够继续执行。在本文中,我们将详细解析nohup命令的作用和原理。一、nohup的作用后台运行命令:通过nohup命令,我们可以让需要长时间运行的命令在后台持续执行,而不受用户退出终端会话的影响。这在需要运行

双核浏览器是什么浏览器 双核浏览器是什么浏览器 Feb 20, 2024 am 08:22 AM

双核浏览器是一种集成了两个不同浏览器内核的浏览器软件。内核是浏览器的核心部分,负责渲染网页内容和执行网页脚本等功能。传统浏览器一般只使用单一的内核,如IE浏览器使用Trident内核,Chrome浏览器使用WebKit/Blink内核,火狐浏览器使用Gecko内核等。而双核浏览器则将两个不同内核集成在一个浏览器中,用户可以根据需要自由切换使用。双核浏览器的出

深度探讨Struts框架的原理与实践 深度探讨Struts框架的原理与实践 Feb 18, 2024 pm 06:10 PM

Struts框架的原理解析与实践探索Struts框架作为JavaWeb开发中常用的MVC框架,具有良好的设计模式和可扩展性,广泛应用于企业级应用程序开发中。本文将对Struts框架的原理进行解析,并结合实际代码示例进行探索,帮助读者更好地理解和应用该框架。一、Struts框架的原理解析1.MVC架构Struts框架基于MVC(Model-View-Con

深入理解MyBatis中的批量Insert实现原理 深入理解MyBatis中的批量Insert实现原理 Feb 21, 2024 pm 04:42 PM

MyBatis是一款流行的Java持久层框架,广泛应用于各种Java项目中。其中,批量插入是一个常见的操作,可以有效提升数据库操作的性能。本文将深入探讨MyBatis中的批量Insert实现原理,并结合具体的代码示例进行详细解析。MyBatis中的批量Insert在MyBatis中,批量Insert操作通常使用动态SQL来实现。通过构建一条包含多个插入值的S

MyBatis分页插件原理详解 MyBatis分页插件原理详解 Feb 22, 2024 pm 03:42 PM

MyBatis是一个优秀的持久层框架,它支持基于XML和注解的方式操作数据库,简单易用,同时也提供了丰富的插件机制。其中,分页插件是使用频率较高的插件之一。本文将深入探讨MyBatis分页插件的原理,并结合具体的代码示例进行说明。一、分页插件原理MyBatis本身并不提供原生的分页功能,但可以借助插件来实现分页查询。分页插件的原理主要是通过拦截MyBatis

深度解析Linux chage命令的功能与工作原理 深度解析Linux chage命令的功能与工作原理 Feb 24, 2024 pm 03:48 PM

Linux系统中的chage命令是用来修改用户账号的密码失效日期的命令,也可以用来修改账号的最长和最短可用日期等。该命令在管理用户账号安全上起到非常重要的作用,可以有效地控制用户密码的使用期限,增强系统的安全性。chage命令的使用方法:chage命令的基本语法为:chage[选项]用户名例如,要修改用户“testuser”的密码失效日期,可以使用以下命

PHP数组分页的最佳实现方式 PHP数组分页的最佳实现方式 May 04, 2024 pm 02:39 PM

PHP数组分页有两种最常见的方式:使用array_slice()函数:计算要跳过的元素数量,然后提取指定范围的元素。使用内置迭代器:实现Iterator接口,rewind()、key()、current()、next()和valid()方法用于遍历指定范围内的元素。

See all articles