| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193 | 
							- <?php
 
- /**
 
-  * Created by PhpStorm.
 
-  * User: Administrator
 
-  * Date: 2022/11/3
 
-  * Time: 16:49
 
-  */
 
- namespace paginate;
 
- class PaginateHelper
 
- {
 
-     private $total; //数据表中总记录数
 
-     private $listRows; //每页显示行数
 
-     private $page; //当前页码
 
-     private $pageNum; //总页数
 
-     private $config = array("prev" => "上一页", "next" => "下一页", "first" => "首 页", "last" => "尾 页");
 
-     private $uri;
 
-     private $listNum = 8;
 
-     /**
 
-      * PaginateHelper constructor.
 
-      * @param $total int 总记录数
 
-      * @param int $listRows 每页显示行数
 
-      * @param null $currentPage 当前页码
 
-      * @param string $query_string 追加get参数
 
-      */
 
-     public function __construct($total, $listRows = 10, $currentPage = null, $query_string = "")
 
-     {
 
-         $this->total = $total;//总记录数
 
-         $this->listRows = $listRows;//每页记录数
 
-         $this->pageNum = ceil($this->total / $this->listRows);//计算总页数
 
-         $this->uri = $this->getUri($query_string);
 
-         $this->setPage($currentPage);
 
-     }
 
-     /**
 
-      * 获取sql的limit语句
 
-      * @return string
 
-      */
 
-     public function getLimitStr()
 
-     {
 
-         return "Limit " . ($this->page - 1) * $this->listRows . ", {$this->listRows}";
 
-     }
 
-     private function setPage($currentPage = null)
 
-     {
 
-         $page = $currentPage ?: ($_GET["page"]??1);
 
-         $page = intval($page);
 
-         $this->page = $page > 0 ? ($page > $this->pageNum ? $this->pageNum : $page) : 1;//当前页码
 
-     }
 
-     /**
 
-      * 获取当前uri
 
-      * @param $query_string
 
-      * @return string
 
-      */
 
-     public function getUri($query_string)
 
-     {
 
-         $url = $_SERVER["REQUEST_URI"] . (strpos($_SERVER["REQUEST_URI"], '?') ? '' : "?") . $query_string;
 
-         $parse = parse_url($url);
 
-         if (isset($parse["query"])) {
 
-             parse_str($parse['query'], $params);
 
-             unset($params["page"]);//去除page参数
 
-             $url = $parse['path'] . '?' . http_build_query($params);
 
-         }
 
-         return $url;
 
-     }
 
-     /**
 
-      * 当前页的起始位置
 
-      * @return int
 
-      */
 
-     public function start()
 
-     {
 
-         if ($this->total == 0)
 
-             return 0;
 
-         else
 
-             return ($this->page - 1) * $this->listRows + 1;//记录从1开始
 
-     }
 
-     /**
 
-      * 当前页的结束位置
 
-      * @return mixed
 
-      */
 
-     public function end()
 
-     {
 
-         return min($this->page * $this->listRows, $this->total);
 
-     }
 
-     //首页
 
-     private function first()
 
-     {
 
-         $html = "";
 
-         if ($this->page == 1)
 
-             $html .= '';
 
-         else
 
-             $html .= "  <a href='{$this->uri}&page=1'>{$this->config["first"]}</a>  ";
 
-         return $html;
 
-     }
 
-     //上一页
 
-     private function prev()
 
-     {
 
-         $html = "";
 
-         if ($this->page == 1)
 
-             $html .= '';
 
-         else
 
-             $html .= "  <a href='{$this->uri}&page=" . ($this->page - 1) . "'>{$this->config["prev"]}</a>  ";
 
-         return $html;
 
-     }
 
-     private function pageList()
 
-     {
 
-         $linkPage = "";
 
-         $inum = floor($this->listNum / 2);
 
-         for ($i = $inum; $i >= 1; $i--) {
 
-             $page = $this->page - $i;
 
-             if ($page < 1)
 
-                 continue;
 
-             $linkPage .= " <a href='{$this->uri}&page={$page}'>{$page}</a> ";
 
-         }
 
-         $linkPage .= " {$this->page} ";
 
-         for ($i = 1; $i <= $inum; $i++) {
 
-             $page = $this->page + $i;
 
-             if ($page <= $this->pageNum)
 
-                 $linkPage .= " <a href='{$this->uri}&page={$page}'>{$page}</a> ";
 
-             else
 
-                 break;
 
-         }
 
-         return $linkPage;
 
-     }
 
-     //下一页
 
-     private function next()
 
-     {
 
-         $html = "";
 
-         if ($this->page >= $this->pageNum)
 
-             $html .= '';
 
-         else
 
-             $html .= "  <a href='{$this->uri}&page=" . ($this->page + 1) . "'>{$this->config["next"]}</a>  ";
 
-         return $html;
 
-     }
 
-     //尾页
 
-     private function last()
 
-     {
 
-         $html = "";
 
-         if ($this->page == $this->pageNum)
 
-             $html .= '';
 
-         else
 
-             $html .= "  <a href='{$this->uri}&page=" . ($this->pageNum) . "'>{$this->config["last"]}</a>  ";
 
-         return $html;
 
-     }
 
-     //跳到第几页
 
-     private function goPage()
 
-     {
 
-         return '  <input type="text" onkeydown="javascript:if(event.keyCode==13){var page=(this.value>' . $this->pageNum . ')?' . $this->pageNum . ':this.value;location=\'' . $this->uri . '&page=\'+page+\'\'}" value="' . $this->page . '" style="width:25px"><input type="button" value="GO" onclick="javascript:var page=(this.previousSibling.value>' . $this->pageNum . ')?' . $this->pageNum . ':this.previousSibling.value;location=\'' . $this->uri . '&page=\'+page+\'\'">  ';
 
-     }
 
-     //显示分页
 
-     public function fpage($display = array(0, 1, 2, 3, 4, 5, 6, 7, 8))
 
-     {
 
-         $html[0] = "  共有<b>{$this->total}</b>个记录  ";
 
-         $html[1] = "  每页显示<b>{$this->listRows}</b>条,本页<b>{$this->start()}~{$this->end()}</b>条  ";
 
-         $html[2] = "  <b>{$this->page}/{$this->pageNum}</b>页  ";
 
-         $html[3] = $this->first();
 
-         $html[4] = $this->prev();
 
-         $html[5] = $this->pageList();
 
-         $html[6] = $this->next();
 
-         $html[7] = $this->last();
 
-         $html[8] = $this->goPage();
 
-         $fpage = '';
 
-         foreach ($display as $index) {
 
-             $fpage .= $html[$index];
 
-         }
 
-         return $fpage;
 
-     }
 
- }
 
 
  |