Php分页的原理是什么,分页原理是什么

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

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['page'] = empty($_REQUEST['page']) || (intval($_REQUEST['page']) <= 0) ? 1 : intval($_REQUEST['page']);

if (isset($_REQUEST['page_size']) && intval($_REQUEST['page_size']) > 0)

{

$filter['page_size'] = intval($_REQUEST['page_size']);

}

elseif (isset($_COOKIE['ECSCP']['page_size']) && intval($_COOKIE['ECSCP']['page_size']) > 0)

{

$filter['page_size'] = intval($_COOKIE['ECSCP']['page_size']);

}

else

{

$filter['page_size'] = 15;

}

if(!empty($filter['resource_id']))

{

$resource_id = $filter['resource_id'] == -1 ? 0 : $filter['resource_id'];

$where .= " and r.resource_id='".$resource_id."'";

}

if($filter['resource_name']){

$where .= " AND r.resource_name like '%".mysql_like_quote($filter['resource_name'])."%' ";

}

if($filter['admin_id'] > -1)

{

$where .= " AND r.admin_id = '".$filter['admin_id']."' ";

}

if ($filter['resource_type'] > -1)

{

$where .= " AND r.resource_type = '" . $filter['resource_type'] . "'";

}

if ($filter['resource_status'] > -1)

{

$where .= " AND r.resource_status = '" . $filter['resource_status'] . "'";

}

if ($filter['resource_rank'] > -1)

{

$where .= " AND r.resource_rank = '" . $filter['resource_rank'] . "'";

}

if($filter['resource_key']){

$where .= " AND r.remark like '%".mysql_like_quote($filter['resource_key'])."%' ";

}

/* 记录总数 */

$sql = "SELECT COUNT(r.resource_id) FROM " . $ecs->table('suppliers_resource')." as r

LEFT JOIN ".$ecs->table('admin_user') . " as u

ON u.user_id = r.admin_id " . $where;

$filter['record_count'] = $db->getOne($sql);

$filter['page_count'] = $filter['record_count'] > 0 ? ceil($filter['record_count'] / $filter['page_size']) : 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('suppliers_resource') . " as r

LEFT JOIN " . $ecs->table('admin_user') . " as u ON u.user_id = r.admin_id " . $where;

$sort_by = $filter['sort_by'];

$sort_order = $filter['sort_order'];

$sql .="GROUP BY r.resource_id ORDER BY " . $sort_by . " " . $sort_order;

if($is_pagtion)

{

$sql .=" LIMIT ".($filter['page'] - 1)*$filter['page_size'].",".$filter['page_size'];

}

set_filter($filter, $sql);

}

else

{

$sql = $result['sql'];

$filter = $result['filter'];

}

$query=$sql;

$row = $db->getAll($sql);

/* 格式话数据 */

foreach ($row AS $key => $value)

{

if ($row[$key]['resource_type'] == 1) {

$row[$key]['resource_type'] = '中模';

}elseif ($row[$key]['resource_type'] == 2) {

$row[$key]['resource_type'] = '泳装';

}elseif ($row[$key]['resource_type'] == 3) {

$row[$key]['resource_type'] = '阿里';

}elseif ($row[$key]['resource_type'] == 2) {

$row[$key]['resource_type'] = '17网';

}

if ($row[$key]['resource_status'] == 1) {

$row[$key]['resource_status'] = '已审核';

}elseif ($row[$key]['resource_status'] == 2) {

$row[$key]['resource_status'] = '已弃用';

}

if ($row[$key]['resource_rank'] == 1)

{

$row[$key]['resource_rank'] = 'A';

}elseif ($row[$key]['resource_rank'] == 2) {

$row[$key]['resource_rank'] = 'B';

}elseif ($row[$key]['resource_rank'] == 3) {

$row[$key]['resource_rank'] = 'C';

}

if(strpos($row[$key]['resource_link'], 'http://') === false)

{

if (strpos($row[$key]['resource_link'], 'https://') === false)

{

$row[$key]['resource_link'] = substr_replace($row[$key]['resource_link'], 'http://', 0, 0);

}

}

}

$arr = array('result' => $row, 'filter' => $filter, 'page_count' => $filter['page_count'], 'record_count' => $filter['record_count'],'query'=>$query);

return $arr;

}

相关推荐:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值