php codeigniter框架分页类_PHP教程
codeigniter 具有非常容易使用的分页类。在本教程中我会做一个从数据库教程返回一组结果并分页这些结果的简单例子。我将使用最新版本的 ci。分页类并没有修改(至少我认为没有),用最新的稳定版框架总是好的
调用方法
//创建分页
$config = array();
$this->load->library('hpages');
$config['base_url'] = "channel/lists/c{$slug}/{page}";
$config['total_rows'] = intval($total);
$config['per_page'] = $pagesize;
$config['uri_segment'] = 1;
$config['num_links'] = 3;
$config['underline_uri_seg'] = 1; //下划线uri中页数所在的位置
$this->hpages->init($config);
$this->template['lists'] = $list;
$this->template['pagestr'] = $this->hpages->create_links(1);
php教程文件代码
/**
* file_name : hpages.php
* 浩海网络 前台 分页类
*
* @package haohailuo
* @author by laurence.xu
* @copyright copyright (c) 2010, haohailuo, inc.
* @link http://www.haohailuo.com
* @since version 1.0 $id$
* @version wed dec 08 12:21:17 cst 2010
* @filesource
*/
class hpages {var $base_url = ''; //基本链接地址
var $total_rows = ''; //数据总数
var $per_page = 10; //每页条数
var $num_links = 2; //要显示的左右链接的个数
var $cur_page = 1; //当前页数
var $first_link = '‹ first'; //首页字符
var $next_link = '>'; //下一页的字符
var $prev_link = ' var $last_link = 'last ›'; //末页的字符
var $uri_segment = 3; //分页数所在的uri片段位置
var $full_tag_open = ''; //分页区域开始的html标签
var $full_tag_close = ''; //分页区域结束的后html标签
var $first_tag_open = ''; //首页开始的html标签
var $first_tag_close = ' '; //首页结束的html标签
var $last_tag_open = ' '; //末页开始的html标签
var $last_tag_close = ''; //末页结束的html标签
var $cur_tag_open = ' ';//当前页开始的...
var $cur_tag_close = ''; //当前页结束的...
var $next_tag_open = ' '; //下一页开始的.....
var $next_tag_close = ' '; //下一页结束的.....
var $prev_tag_open = ' '; //上一页开始的.....
var $prev_tag_close = ''; //上一页结束的.....
var $num_tag_open = ' '; //“数字”链接的打开标签。
var $num_tag_close = ''; //“数字”链接的结束标签。
var $page_query_string = false;
var $query_string_segment = 'per_page';
var $page_mode = 'default'; //default for add page at the end? if include {page}, will replace it for current page.
var $underline_uri_seg = -1; //存在下划线时,页码所在数组下标位置
var $custom_cur_page = 0; //自定义当前页码,存在此值是,系统将不自动判断当前页数,默认不启用
function __construct() {
$this->hpages();
}
/**
* constructor
*
* @access public
*/
function hpages() {
if (file_exists(apppath.'config/pagination.php')) {
require_once(apppath.'config/pagination.php');
foreach ($config as $key=>$val) {
$this->{$key} = $val;
}
}
log_message('debug', "hpages class initialized");
}
/**
* 初始化参数
*
* @see init()
* @author laurence.xu
* @version wed dec 08 12:26:07 cst 2010
* @param$params 待初始化的参数
*/
function init($params = array()) {
if (count($params) > 0) {
foreach ($params as $key => $val) {
if (isset($this->$key)) {
$this->$key = $val;
}
}
}
}
/**
* 创建分页链接
*
* @see create_links()
* @author laurence.xu
* @version wed dec 08 15:02:27 cst 2010
* @param$show_info 是否显示总条数等信息
* @return$output
*/
function create_links($show_info = false, $top_info = false) {
//如果没有记录或者每页条数为0,则返回空
if ($this->total_rows == 0 || $this->per_page == 0) {
return '';
}//计算总页数
$num_pages = ceil($this->total_rows / $this->per_page);//只有一页,返回空
if ($num_pages == 1 && !$show_info) {
return '';
}
$ci =& get_instance();//获取当前页编号
if ($ci->config->item('enable_query_strings') === true || $this->page_query_string === true) {
if ($ci->input->get($this->query_string_segment) != 0) {
$this->cur_page = $ci->input->get($this->query_string_segment);// prep the current page - no funny business!
$this->cur_page = (int) $this->cur_page;
}
} else {
if (intval($this->custom_cur_page) > 0) {
$this->cur_page = (int) $this->custom_cur_page;
}else{
$uri_segment = $ci->uri->segment($this->uri_segment, 0);
if ( !empty($uri_segment) ) {
$this->cur_page = $uri_segment;
//如果有下划线
if ($this->underline_uri_seg >= 0) {
if (strpos($this->cur_page, '-') !== false) {
$arr = explode('-', $this->cur_page);
}else {
$arr = explode('_', $this->cur_page);
}
$this->cur_page = $arr[$this->underline_uri_seg];
unset($arr);
}
// prep the current page - no funny business!
$this->cur_page = (int) $this->cur_page;
}
}
}
//echo $this->cur_page;exit;
//左右显示的页码个数
$this->num_links = (int)$this->num_links;if ($this->num_links show_error('your number of links must be a positive number.');
}if ( ! is_numeric($this->cur_page) || $this->cur_page $this->cur_page = 1;
}
//如果当前页数大于总页数,则赋值给当前页数最大值
if ($this->cur_page > $num_pages) {
$this->cur_page = $num_pages;
}$uri_page_number = $this->cur_page;
if ($ci->config->item('enable_query_strings') === true || $this->page_query_string === true) {
$this->base_url = rtrim($this->base_url).'&'.$this->query_string_segment.'=';
} else {
$this->base_url = rtrim($this->base_url, '/') .'/';
}
if (strpos($this->base_url, "{page}") !== false) {
$this->page_mode = 'replace';
}
$output = $top_output = '';
//数据总量信息
if ($show_info) {
$output = " 共".$this->total_rows ."条记录 {$this->cur_page}/".$num_pages."页 每页{$this->per_page}条 ";
}
//数据信息,显示在上面,以供提醒
if ($top_info) {
$top_output = " 共 ".$this->total_rows ." 条记录 第{$this->cur_page}页/共".$num_pages."页 ";
}
//判断是否要显示首页
if ($this->cur_page > $this->num_links+1) {
$output .= $this->first_tag_open.''.$this->first_link.''.$this->first_tag_close;
}
//显示上一页
if ($this->cur_page != 1) {
$j = $this->cur_page - 1;
if ($j == 0) $j = '';
$output .= $this->prev_tag_open.''.$this->prev_link.''.$this->prev_tag_close;
}
//显示中间页
for ($i=1; $i if ($i cur_page-$this->num_links || $i > $this->cur_page+$this->num_links) {
continue;
}
//显示中间页数
if($this->cur_page == $i){
$output .= $this->cur_tag_open.$i.$this->cur_tag_close; //当前页
}else {
$output .= $this->num_tag_open.''.$i.''.$this->num_tag_close;
}
}
//显示下一页
if ($this->cur_page $k = $this->cur_page + 1;
$output .= $this->next_tag_open.''.$this->next_link.''.$this->next_tag_close;
}
//显示尾页
if (($this->cur_page + $this->num_links) $output .= $this->last_tag_open.''.$this->last_link.''.$this->last_tag_close;
}$output = preg_replace("#([^:])//+#", "1/", $output);
// add the wrapper html if exists
$output = $this->full_tag_open.$output.$this->full_tag_close;if ($top_info) {
return array($output, $top_output);
}else {
return $output;
}
}
/**
* 创建链接url地址
*
* @param$str
* @return
*/
function makelink($str = '') {
if($this->page_mode == 'default') {
return $this->_forsearch($this->base_url.$str);
} else {
$url = $this->base_url;
if ($str == 1) {
$url = str_replace('/{page}', '', $this->base_url);
}
$url = str_replace("{page}", $str, $url);
return $this->_forsearch($url);
}
}
/**
* 处理url地址
*
* @see _forsearch()
* @author laurence.xu
* @version wed dec 08 14:33:58 cst 2010
* @param$string pinfo
* @return
*/
function _forsearch($string) {
$length = strlen($string) - 1;
if($string{$length} == '/') {
$string = rtrim($string, '/');
}
return site_url($string);
return $string;
}
}// end pagination class
/* end of file hpages.php */
/* location: ./system/libraries/hpages.php */

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

PHP仍然具有活力,其在現代編程領域中依然佔據重要地位。 1)PHP的簡單易學和強大社區支持使其在Web開發中廣泛應用;2)其靈活性和穩定性使其在處理Web表單、數據庫操作和文件處理等方面表現出色;3)PHP不斷進化和優化,適用於初學者和經驗豐富的開發者。

PHP和Python各有優劣,選擇取決於項目需求和個人偏好。 1.PHP適合快速開發和維護大型Web應用。 2.Python在數據科學和機器學習領域佔據主導地位。

PHP適合web開發,特別是在快速開發和處理動態內容方面表現出色,但不擅長數據科學和企業級應用。與Python相比,PHP在web開發中更具優勢,但在數據科學領域不如Python;與Java相比,PHP在企業級應用中表現較差,但在web開發中更靈活;與JavaScript相比,PHP在後端開發中更簡潔,但在前端開發中不如JavaScript。

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。
