电脑安全

您当前的位置:主页 > 电脑安全 >

php分页类程序员-网络编程

来源:[db:来源]标题:   分页    编辑:电脑技术全能网 时间:2019-09-18 18:01

原标题:php分页类程序员-网络编程
   class Page { // public param public $pageName = 'page'; // 默许 page 标签,即 filename.php?pageName=4 中的 pageName public $prevPage = '<'; // 上一页 public $nextPage = '>'; // 下一页 public $prevBar = '<<'; // 上一分页条 public $nextBar = '>>'; // 下一分页条 // private param private $_totalNums = 1; // 总记载数 private $_barNum = 10; // 分页条表现分页个数 private $_totalPage = 0; // 总页数 private $_nowPage = 1; // 以后页 private $_perPage = 10; // 每页表现记载数 private $_preUrl = ''; // url 前缀 private $_preNow = 0; // 以后页前表现分页个数 (范畴应当是 0 至 $_barNum-1) private $_fromPage = 0; // 分页条终点 private $_toPage = 0; // 分页条末了 private $_offset = 0; // sql 查问记载偏移量 // public functions ----------------------------------------------------------------- // 结构函数 初始化分页变量 // @param $nums int 总记载数 // @param $per int 每页表现记载数 // @param $now int 以后页数 // @param $url string url前缀 默许为空 public function __construct($nums, $per = '', $preNow = '', $barNum = '', $now = '', $url = '') { // 初始化 $this->_set($nums, $per, $preNow, $barNum, $now, $url); $this->_totalPage = ceil($this->_totalNums/$this->_perPage); $this->_offset = ($this->_nowPage - 1) * $this->_perPage; } // 上一页 public function getPrevPage() { // 以后页不是第一页 if($this->_nowPage > 1) { return $this->_setLink($this->_setUrl($this->_nowPage - 1), $this->prevPage, 'prevpage'); } } // 下一页 public function getNextPage() { // 以后页小于总页数 if($this->_nowPage < $this->_totalPage) { return $this->_setLink($this->_setUrl($this->_nowPage + 1), $this->nextPage, 'nextpage'); } } // 第一页 public function getFirstPage() { // 终点不是第一页 if(($this->_nowPage - $this->_preNow) > 1) { return $this->_setLink($this->_setUrl(1), '1...', 'firstpage'); } } // 最初一页 public function getLastPage() { // 末了不大于总页数 if(($this->_nowPage - $this->_preNow + $this->_barNum) <= $this->_totalPage) { return $this->_setLink($this->_setUrl($this->_totalPage), '...' . $this->_totalPage, 'lastpage'); } } // 上一分页条 public function getPrevBar() { // 终点大于一个分页条数 if(($this->_nowPage - $this->_preNow) > $this->_barNum) { return $this->_setLink($this->_setUrl(($this->_nowPage - $this->_preNow) - $this->_barNum), $this->prevBar, 'prevbar'); } } // 下一分页条 public function getNextBar() { // 末了不大于总页数 if(($this->_nowPage - $this->_preNow + $this->_barNum) <= $this->_totalPage) { return $this->_setLink($this->_setUrl($this->_fromPage + $this->_barNum), $this->nextBar, 'nextbar'); } } // 分页条 public function pageBar() { // 初始化分页条的委曲端点 $this->_toPage = $this->_nowPage + ($this->_barNum - $this->_preNow - 1); if($this->_toPage > $this->_totalPage) { $this->_preNow = $this->_barNum - ($this->_totalPage - $this->_nowPage + 1); $this->_toPage = $this->_totalPage; } if($this->_toPage < $this->_barNum) { $this->_toPage = $this->_barNum; } $this->_fromPage = $this->_nowPage - $this->_preNow; if($this->_fromPage < 1) { $this->_fromPage = 1; } // 初始化分页条 $return = ''; for($i = $this->_fromPage; $i <= $this->_toPage; $i++) { if($i != $this->_nowPage) { $return .= $this->_setLink($this->_setUrl($i), $i, 'page'); } else { $return .= '<span class="nowpage">' . $i . '</span>'; } } return $return; } // 前往偏移量 用于 sql 查问 public function getOffset() { return $this->_offset; } // 前往总记载数 public function getTotalNums() { return '<span class="totalnums">' . $this->_totalNums . '</span>'; } // 表现分页 public function showPage() { return $this->getTotalNums() . $this->getFirstPage() . $this->getPrevBar() . $this->getPrevPage() . $this->pageBar() . $this->getNextPage() . $this->getNextBar() . $this->getLastPage(); } // private functions ---------------------------------------------------------------- // private function _set($nums, $per, $preNow, $barNum, $now, $url) { // 设置总记载数 if($nums > 0) { $this->_totalNums = $nums; } // 设置每页表现记载数 if($per > 0) { $this->_perPage = $per; } // 设置以后页前表现分页个数 if($preNow > 0) { $this->_preNow = $preNow; } // 设置分页条链接个数 if($barNum > 0) { $this->_barNum = $barNum; } // 设置以后页 if(empty($now)) { // 主动猎取 if(isset($_GET[$this->pageName])) { $this->_nowPage = intval($_GET[$this->pageName]); } } else { // $now 已手动处置 $this->_nowPage = intval($now); // } // 设置 url 前缀 if(!empty($url)) { // $url 已手动处置 $this->_preUrl = $url . (stristr($url, '?') ? '&' : '?') . $this->pageName . '='; } else { // 主动猎取 if(empty($_SERVER['QUERY_STRING'])) { // url 中不存在查问 $this->_preUrl = $_SERVER['REQUEST_URI'] . '?' . $this->pageName . '='; } else { if(stristr($_SERVER['QUERY_STRING'], $this->pageName . '=')) { // 查问中有 page=n(2,3...) $this->_preUrl = str_replace($this->pageName . '=' . $this->_nowPage, '', $_SERVER['REQUEST_URI']); $lastCharacter = $this->_preUrl[strlen($this->_preUrl) - 1]; if($lastCharacter == '?' || $lastCharacter == '&') { // page=n(2,3...) 在原 url 的末端 $this->_preUrl .= $this->pageName . '='; } else { // page=n(2,3...) 不在原 url 的末端 $this->_preUrl .= '&' . $this->pageName . '='; } } else { // 查问中没有 page=n(2,3...) $this->preUrl = $_SERVER['REQUEST_URI'] . '&' . $this->pageName . '='; } } } } // 设置链接地点 private function _setUrl($pageNo) { return $this->_preUrl . $pageNo; } // 设置链接 private function _setLink($url, $link, $style = '') { $style = 'class="' . $style . '"'; return '<a href="' . $url . '" ' . $style . '>' . $link . '</a>'; }}//应用方式$total = 1245;//class Page($nums, $per = '', $preNow = '', $barNum = '', $now = '', $url = '')$page = new Page($total);$pager = $page->showPage();$smarty->assign('pager', $pager);$smarty->display('index.tpl');

上一篇:sql多表关联查询语句-网络编程

下一篇:没有了