您好,欢迎访问一九零五行业门户网

分页原理是什么

数据分页需要以下几个条件:
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; }
相关推荐:
php中关于分页原理的实例
php 分页原理详解
以上就是分页原理是什么的详细内容。
其它类似信息

推荐信息