codeigniter中测试通过的分页类示例

2015-01-24信息快讯网

这篇文章主要介绍了codeigniter中测试通过的分页类示例,需要的朋友可以参考下

通用分页类(以Codeigniter测试)

codeigniter中测试通过的分页类示例_信息快讯网

page_list.php

<?php if( ! defined('BASEPATH')) die('No Access');

/** * 分页类 */ class Page_list {

/** * 总数据 * @var int */ private $total; /** * 每页显示数据 * @var int */ private $size; /** * 当前页数 * @var int */ private $page; /** * 页数列表左右页数 * @var int */ private $len;

/** * 总页数 * @var int */ private $page_total; /** * 页码列表 * @var array */ private $page_list;

/** * 基准地址 * @var string */ private $base_url; /** * 替换标志 * @var string */ private $place; /** * 分页样式 * @var string */ private $style;

/** * 构造函数 * * @param array $config 配置数组 */ public function __construct($config = array()){ // 初始化默认值 $this->total = 0; $this->size = 20; $this->page = 1; $this->len = 4; $this->page_total = 1; $this->page_list = array(); $this->base_url = '?page=-page-'; $this->place = '-page-'; $this->style = $this->get_default_style(); $this->initialize($config); }

/** * 初始化分页 * * @param array $config 配置数组 */ public function initialize($config = array()){ // 取得配置值 if(is_array($config)){ if(array_key_exists('total', $config)) $this->total = @intval($config['total']); if(array_key_exists('size', $config)) $this->size = @intval($config['size']); if(array_key_exists('page', $config)) $this->page = @intval($config['page']); if(array_key_exists('len', $config)) $this->len = @intval($config['len']); if(array_key_exists('base_url', $config)) $this->base_url = @strval($config['base_url']); if(array_key_exists('place', $config)) $this->place = @strval($config['place']); if(array_key_exists('style', $config)) $this->style = @strval($config['style']); } // 修正值 if($this->total<0) $this->total = 0; if($this->size<=0) $this->size = 20; if($this->page<=0) $this->page = 1; if($this->len<=0) $this->len = 4; // 执行分页算法 $this->page_total = ceil($this->total/$this->size); if($this->page_total<=0) $this->page_total = 1; if($this->page>$this->page_total) $this->page = $this->page_total; if($this->page-$this->len>=1){ for($i=$this->len; $i>0; $i--){ $this->page_list[] = $this->page - $i; } }else{ for($i=1; $i<$this->page; $i++){ $this->page_list[] = $i; } } $this->page_list[] = $this->page; if($this->page+$this->len<=$this->page_total){ for($i=1; $i<=$this->len; $i++){ $this->page_list[] = $this->page + $i; } }else{ for($i=$this->page+1; $i<=$this->page_total; $i++){ $this->page_list[] = $i; } } }

/** * 默认分页样式 * * @return string */ public function get_default_style(){ $style = '<style type="text/css">'; $style .= ' div.page_list { margin:0;padding:0;overflow:hidden;zoom:1;}'; $style .= ' div.page_list a {display:block;float:left;height:20px;line-height:21px; font-size:13px;font-weight:normal;font-style:normal;color:#133DB6;text-decoration:none;margin:0 3px;padding:0 7px;overflow;zoom:1;}'; $style .= ' div.page_list a.page_list_act { font-size:13px;padding:0 6px;}'; $style .= ' div.page_list a:link, div.page_list a:visited { background:#FFF;border:1px #EEE solid;text-decoration:none;}'; $style .= ' div.page_list a:hover, div.page_list a:active { background:#EEE;text-decoration:none;}'; $style .= ' div.page_list strong { display:block;float:left;height:20px;line-height:21px;font-size:13px;font-weight:bold;font-style:normal;color:#000;margin:0 3px;padding:0 8px;overflow:hidden;zoom:1;}'; $style .= ' </style>'; return $style; }

/** * 是否是第一页 * * @return bool */ public function is_first_page(){ return $this->page == 1; }

/** * 获取第一页页码 * * @return int */ public function get_first_page(){ return 1; }

/** * 是否是最后一页 * * @return bool */ public function is_last_page(){ return $this->page == $this->page_total; }

/** * 获取最后一页页码 * * @return int */ public function get_last_page(){ return $this->page_total; }

/** * 是否存在上一页 * * @return bool */ public function has_prev_page(){ return $this->page > 1; }

/** * 是否存在下一页 * * @return bool */ public function has_next_page(){ return $this->page < $this->page_total; }

/** * 获取上一页页码 * * @return int */ public function get_prev_page(){ return $this->has_prev_page() ? $this->page - 1 : $this->page; }

/** * 获取下一页页码 * * @return int */ public function get_next_page(){ return $this->has_next_page() ? $this->page + 1 : $this->page; }

/** * 获取当前页页码 * * @return int */ public function get_curr_page(){ return $this->page; }

/** * 获取总数据数 * * @return int */ public function get_total(){ return $this->total; }

/** * 获取每页显示数据数 * * @return int */ public function get_size(){ return $this->size; }

/** * 获取总页数 * * @return int */ public function get_total_page(){ return $this->page_total; }

/** * 构建并返回分页代码 * * @param string $base_url 基准地址 * @param string $place 替换标志 * @param string $style 分页样式 * @return string 分页HTML代码 */ public function display($base_url = '', $place = '', $style = ''){ if($base_url==='') $base_url = $this->base_url; if($place==='') $place = $this->place; if($style==='') $style = $this->style; $str = $style.'<div class="page_list">'; if( ! $this->is_first_page()){ $str .= '<a class="page_list_act" href="'.str_replace($place, $this->get_first_page(), $base_url).'">首页</a>'; } if($this->has_prev_page()){ $str .= '<a class="page_list_act" href="'.str_replace($place, $this->get_prev_page(), $base_url).'">上一页</a>'; } foreach($this->page_list as $v){ if($v==$this->page){ $str .= '<strong>' . $v . '</strong>'; }else{ $str .= '<a href="'.str_replace($place, $v, $base_url).'">'.$v.'</a>'; } } if($this->has_next_page()){ $str .= '<a class="page_list_act" href="'.str_replace($place, $this->get_next_page(), $base_url).'">下一页</a>'; } if( ! $this->is_last_page()){ $str .= '<a class="page_list_act" href="'.str_replace($place, $this->get_last_page(), $base_url).'">尾页</a>'; } $str .= '</div>'; return $str; }

} ?>

/application/view/pagelist.php

<?php if( ! defined('BASEPATH')) die('No Access');

class Pagelist extends CI_Controller {

public function page(){ $this->load->helper('url'); $page = $this->input->get('page'); $page = @intval($page); if($page<=0) $page = 1; $this->load->library('page_list',array('total'=>10000,'size'=>16,'page'=>$page)); $pl = $this->page_list->display(site_url('pagelist/page/page/-page-')); $this->load->view('pagelist', array('pl' => $pl)); }

} ?>

/application/view/pagelist.php

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="content-type" content="text/html;charset=utf-8" />
    <title>分页测试</title>
</head>
<body>
<?php echo $pl; ?>
</body>
</html>

PHP提示Cannot modify header information - headers already sent by解决方法
PHP中exec与system用法区别分析
php中file_get_content 和curl以及fopen 效率分析
CodeIgniter错误mysql_connect(): No such file or directory解决方法
Windows下的PHP 5.3.x安装 Zend Guard Loader教程
当前比较流行的两款PHP加密、解密工具Zend Guard和iconCube介绍
Yii查询生成器(Query Builder)用法实例教程
CodeIgniter框架URL路由总结
PHP提示Deprecated: mysql_connect(): The mysql extension is deprecated的解决方法
Codeigniter中mkdir创建目录遇到权限问题和解决方法
codeigniter上传图片不能正确识别图片类型问题解决方法
2个Codeigniter文件批量上传控制器写法例子
php实现的漂亮分页方法
php生成静态页面的简单示例
PHP检测移动设备类mobile detection使用实例
PHP header()函数常用方法总结
php实现telnet功能示例
php使用json_encode对变量json编码
PHP包含文件函数include、include_once、require、require_once区别总结
php警告Creating default object from empty value 问题的解决方法
php使用curl存储cookie的示例
PHP调用VC编写的COM组件实例
php中cookie的使用方法
codeigniter自带数据库类使用方法说明
easyui的tabs update正确用法分享
PHP fopen()和 file_get_contents()应用与差异介绍
CodeIgniter框架中_remap()使用方法2例
解决Codeigniter不能上传rar和zip压缩包问题
codeigniter教程之上传视频并使用ffmpeg转flv示例
codeigniter教程之多文件上传使用示例
©2014-2024 dbsqp.com