分頁原理是什麼
資料分頁需要以下幾個條件:
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中文網其他相關文章!

熱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)

ccsvchst.exe是一種常見的進程文件,它是SymantecEndpointProtection(SEP)軟體的一部分,而SEP則是一款由著名的網路安全公司Symantec開發的終端保護解決方案。作為該軟體的一部分,ccsvchst.exe負責管理和監控SEP的相關進程。首先,我們來了解SymantecEndpointProtection(

nohup的作用及原理解析在Unix和類Unix作業系統中,nohup是一個常用的命令,用於在後台運行命令,即便用戶退出當前會話或關閉終端窗口,命令仍然能夠繼續執行。在本文中,我們將詳細解析nohup指令的作用和原理。一、nohup的作用後台運行命令:透過nohup命令,我們可以讓需要長時間運行的命令在後台持續執行,而不受用戶退出終端會話的影響。這在需要運行

雙核心瀏覽器是一種整合了兩個不同瀏覽器核心的瀏覽器軟體。核心是瀏覽器的核心部分,負責渲染網頁內容和執行網頁腳本等功能。傳統瀏覽器一般只使用單一的內核,如IE瀏覽器使用Trident內核,Chrome瀏覽器使用WebKit/Blink內核,火狐瀏覽器使用Gecko內核等。而雙核心瀏覽器則將兩個不同核心整合在一個瀏覽器中,使用者可以根據需要自由切換使用。雙核瀏覽器的出

Struts框架的原理解析與實務探索Struts框架作為JavaWeb開發中常用的MVC框架,具有良好的設計模式和可擴展性,廣泛應用於企業級應用程式開發中。本文將對Struts框架的原理進行解析,並結合實際程式碼範例進行探索,幫助讀者更好地理解和應用該框架。一、Struts框架的原理解析1.MVC架構Struts框架是基於MVC(Model-View-Con

MyBatis是一款流行的Java持久層框架,廣泛應用於各種Java專案。其中,批次插入是常見的操作,可以有效提升資料庫操作的效能。本文將深入探討MyBatis中批量的Insert實作原理,並結合具體的程式碼範例進行詳細解析。 MyBatis中的批次Insert在MyBatis中,批量Insert操作通常使用動態SQL來實作。透過建構一條包含多個插入值的S

Linux系統中的RPM(RedHatPackageManager)工具是安裝、升級、解除安裝和管理系統軟體套件的強大工具。它是RedHatLinux系統中常用的軟體包管理工具,也被許多其他Linux發行版採用。 RPM工具的角色非常重要,它使得系統管理員和使用者能夠方便地管理系統上的軟體包。透過RPM,使用者可以輕鬆安裝新的軟體包,升級現有的軟體

MyBatis是一個優秀的持久層框架,它支援基於XML和註解的方式操作資料庫,簡單易用,同時也提供了豐富的插件機制。其中,分頁插件是使用頻率較高的插件之一。本文將深入探討MyBatis分頁外掛的原理,並結合具體的程式碼範例進行說明。一、分頁外掛原理MyBatis本身並沒有提供原生的分頁功能,但可以藉助外掛程式來實現分頁查詢。分頁插件的原理主要是透過攔截MyBatis

Linux系統中的chage指令是用來修改使用者帳號的密碼失效日期的指令,也可以用來修改帳號最長的可用日期等。此指令在管理使用者帳號安全性上扮演著非常重要的作用,可以有效控制使用者密碼的使用期限,並增強系統的安全性。 chage指令的使用方法:chage指令的基本語法為:chage[選項]使用者名稱例如,要修改使用者「testuser」的密碼失效日期,可以使用下列命
