<?php class Page { // 分頁欄每頁顯示的頁數 public $rollPage = 10; // 頁數跳轉時要帶的參數 public $parameter; // 默認列表每頁顯示行數 public $listRows = 20; // 起始行數 public $firstRow; // 分頁總頁面數 protected $totalPages; // 總行數 protected $totalRows; // 當前頁數 protected $nowPage; // 分頁的欄的總頁數 protected $coolPages; // 分頁顯示定製 protected $config = array('header' => '條記錄', 'prev' => '上一頁', 'next' => '下一頁', 'first' => '首頁', 'last' => '尾頁', 'theme' => ' %totalRow% %header% %nowPage%/%totalPage% 頁 %upPage% %first% %prePage% %linkPage% %downPage% %nextPage% %end% %ajax%'); // 默認分頁變量名 protected $varPage; //分頁外層div的id protected $pagesId; //分頁內容替換目標ID protected $target; /** +---------------------------------------------------------- * 架構函數 +---------------------------------------------------------- * @access public +---------------------------------------------------------- * @param array $totalRows 總的記錄數 * @param array $listRows 每頁顯示記錄數 * @param array $parameter 分頁跳轉的參數 +---------------------------------------------------------- */ public function __construct($totalRows, $listRows = '', $parameter = '',$target='',$pagesId='') { $this->totalRows = $totalRows; $this->parameter = $parameter; $this->target = $target; $this->pagesId = $pagesId; $this->varPage = C('VAR_PAGE') ? C('VAR_PAGE') : 'p'; if (!empty($listRows)) { $this->listRows = intval($listRows); } $this->totalPages = ceil($this->totalRows / $this->listRows); //總頁數 $this->coolPages = ceil($this->totalPages / $this->rollPage); $this->nowPage = !empty($_GET[$this->varPage]) ? intval($_GET[$this->varPage]) : 1; if (!empty($this->totalPages) && $this->nowPage > $this->totalPages) { $this->nowPage = $this->totalPages; } $this->firstRow = $this->listRows * ($this->nowPage - 1); } public function setConfig($name, $value) { if (isset($this->config[$name])) { $this->config[$name] = $value; } } /** +---------------------------------------------------------- * 分頁顯示輸出 +---------------------------------------------------------- * @access public +---------------------------------------------------------- */ public function show() { if (0 == $this->totalRows) return ''; $p = $this->varPage; $nowCoolPage = ceil($this->nowPage / $this->rollPage); $url = $_SERVER['REQUEST_URI'] . (strpos($_SERVER['REQUEST_URI'], '?') ? '' : "?") . $this->parameter; $parse = parse_url($url); if (isset($parse['query'])) { parse_str($parse['query'], $params); unset($params[$p]); $url = $parse['path'] . '?' . http_build_query($params); } //上下翻頁字符串 $upRow = $this->nowPage - 1; $downRow = $this->nowPage + 1; if ($upRow > 0) { $upPage = "<a href='" . $url . "&" . $p . "=$upRow'>" . $this->config['prev'] . "</a>"; } else { $upPage = ""; } if ($downRow <= $this->totalPages) { $downPage = "<a href='" . $url . "&" . $p . "=$downRow'>" . $this->config['next'] . "</a>"; } else { $downPage = ""; } // << < > >> if ($nowCoolPage == 1) { $theFirst = ""; $prePage = ""; } else { $preRow = $this->nowPage - $this->rollPage; $prePage = "<a href='" . $url . "&" . $p . "=$preRow' >上" . $this->rollPage . "頁</a>"; $theFirst = "<a href='" . $url . "&" . $p . "=1' >" . $this->config['first'] . "</a>"; } if ($nowCoolPage == $this->coolPages) { $nextPage = ""; $theEnd = ""; } else { $nextRow = $this->nowPage + $this->rollPage; $theEndRow = $this->totalPages; $nextPage = "<a href='" . $url . "&" . $p . "=$nextRow' >下" . $this->rollPage . "頁</a>"; $theEnd = "<a href='" . $url . "&" . $p . "=$theEndRow' >" . $this->config['last'] . "</a>"; } // 1 2 3 4 5 $linkPage = ""; for ($i = 1; $i <= $this->rollPage; $i++) { $page = ($nowCoolPage - 1) * $this->rollPage + $i; if ($page != $this->nowPage) { if ($page <= $this->totalPages) { $linkPage .= " <a href='" . $url . "&" . $p . "=$page'> " . $page . " </a>"; } else { break; } } else { if ($this->totalPages != 1) { $linkPage .= " <span class='current'>" . $page . "</span>"; } } } //<script>jquery分頁</script> $ajax = ''; if($this->target){ $ajax = <<<eco <script> jQuery(function($) { $('#{$this->pagesId} a').click(function(){ $.ajax({ url: $(this).attr('href'), dataType: "html", type: "POST", cache: false, success: function(html){ $("#{$this->target}").html(html); } }); return false; }); }); </script> eco; } $pageStr = str_replace( array( '%header%', '%nowPage%', '%totalRow%', '%totalPage%', '%upPage%', '%downPage%', '%first%', '%prePage%', '%linkPage%', '%nextPage%', '%end%', '%ajax%' ), array( $this->config['header'], $this->nowPage, $this->totalRows, $this->totalPages, $upPage, $downPage, $theFirst, $prePage, $linkPage, $nextPage, $theEnd, $ajax ), $this->config['theme'] ); return $pageStr; } }
調用方法:在tp中:javascript
public function ajaxPage(){ $tz=M('MoneyLog'); import('ORG.Util.ajaxpage'); $count = $tz->count(); $page = new Page($count,10,'type=1','ajax_div','ajax_page_div'); $data = $tz->limit($page->firstRow, $page->listRows)->select(); $pagestr = $page->show(); $this->assign('list',$data); $this->assign('show',$pagestr); if(IS_AJAX){ exit($this->fetch('list')); } $this->display('list'); }
靜態頁面:php
<script type="text/javascript" src="/Public/shouye/js/jquery-1.7.1.min.js"></script> <div id="ajax_div"> <table> <tr> <td>性別</td><td>年齡</td><td>單位</td> </tr> <?php foreach($list as $v){ ?> <tr> <td><?php echo $v['total_money']; ?></td> <td><?php echo $v['time']; ?></td> <td><?php echo $v['ip']; ?></td> </tr> <?php } ?> </table> <div><div id="ajax_page_div">{$show}</div></div> </div> <script> $("body").delegate("#ajax_page_div a","click",function(){ $.get(this.href,function(html){ $('#ajax_div').html(html); }); return false; }); }); </script>