Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html>
- <html>
- <head>
- <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
- <script
- src="https://code.jquery.com/jquery-2.2.4.min.js"
- integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44="
- crossorigin="anonymous"></script>
- <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
- </head>
- <style>
- ul.mpagination {
- display: inline-block;
- margin: 0 auto;
- }
- ul.mpagination li {
- display: inline;
- }
- ul.mpagination li span, ul.mpagination li a {
- display: inline-block;
- width: 40px;
- height: 40px;
- line-height: 40px;
- box-sizing: border-box;
- text-align: center;
- margin-left: -1px;
- }
- ul.mpagination li a {
- border: 1px solid #d6d6d6;
- transition: 0.3s;
- }
- ul.mpagination li a.active, ul.mpagination li:hover a {
- background-color: #337ab7;
- color: #fff;
- transition: 0.3s;
- }
- ul.mpagination li:first-child a {
- border-top-left-radius: 5px;
- border-bottom-left-radius: 5px;
- }
- ul.mpagination li:last-child a {
- border-top-right-radius: 5px;
- border-bottom-right-radius: 5px;
- }
- </style>
- <body>
- <?php
- class pagination {
- private $_pn;
- private $_pc;
- private $_pg;
- private $_pnum;
- public function __construct($key) {
- $this->_get = $_GET;
- $this->key = $key;
- $this->page = (ISSET($this->_get[$key]) && is_numeric($this->_get[$key])) ? $this->_get[$key] : 1;
- }
- private function pactive($num) {
- if ($this->page == $num) {
- return 'active';
- }
- }
- private function path($page_num) {
- $this->_get[$this->key] = $page_num;
- return $_SERVER['PHP_SELF'] . '?' . http_build_query($this->_get);
- }
- public function show($total, $per_page) {
- $this->per_page = $per_page;
- $_pc = ceil($total / $per_page);
- $mid_page = ceil($_pc / 2);
- $_pnum = (ISSET($this->page)) ? $this->page : $mid_page;
- $_pn = '<ul class="mpagination">';
- switch(true) {
- case $_pc < 14:
- for ($i = 1; $i <= $_pc; $i++) {
- $_pn .= '<li><a href="'.$this->path($i).'" class="'.$this->pactive($i).'">'.$i.'</a></li>';
- }
- break;
- default:
- $_pg[0] = 1;
- $_pg[1] = 2;
- $_pg[2] = 3;
- $_pg[8] = $_pc - 2;
- $_pg[9] = $_pc - 1;
- $_pg[10] = $_pc;
- if ($_pnum <= 5) {
- $_pg[3] = 4;
- $_pg[4] = 5;
- $_pg[5] = 6;
- $_pg[6] = 7;
- $_pg[7] = 8;
- } else if ($_pnum >= $_pc - 3) {
- $_pg[3] = $_pc - 7;
- $_pg[4] = $_pc - 6;
- $_pg[5] = $_pc - 5;
- $_pg[6] = $_pc - 4;
- $_pg[7] = $_pc - 3;
- } else {
- $_pg[3] = $_pnum - 2;
- $_pg[4] = $_pnum - 1;
- $_pg[5] = $_pnum;
- $_pg[6] = $_pnum + 1;
- $_pg[7] = $_pnum + 2;
- }
- $mid_left = ceil(($_pg[3] - $_pg[2]) / 2) + $_pg[2];
- $mid_right = ceil(($_pg[8] - $_pg[7]) / 2) + $_pg[7];
- for ($i = 0; $i < 3; $i++) {
- $active = ($_pg[$i] == $_pnum) ? ' active ' : '';
- $_pn .= '<li><a href="'.$this->path($_pg[$i]).'" class="'.$this->pactive($_pg[$i]).'">'.$_pg[$i].'</a></li>';
- }
- if ($_pg[3] !== 4) { $_pn .= '<li><span>...</span></li>'; }
- if (!in_array($mid_left,$_pg)) {
- $_pn .= '<li><a href="'.$this->path($mid_left).'" class="'.$this->pactive($mid_left).'">'.$mid_left.'</a></li>';
- $_pn .= '<li><span>...</span></li>';
- }
- $_pn .= '<li><a href="'.$this->path($_pg[3]).'" class="'.$this->pactive($_pg[3]).'">'. $_pg[3] .'</a></li>';
- $_pn .= '<li><a href="'.$this->path($_pg[4]).'" class="'.$this->pactive($_pg[4]).'">'.$_pg[4].'</a></li>';
- $_pn .= '<li><a href="'.$this->path($_pg[5]).'" class="'.$this->pactive($_pg[5]).'">'. $_pg[5] .'</a></li>';
- $_pn .= '<li><a href="'.$this->path($_pg[6]).'" class="'.$this->pactive($_pg[6]).'">'.$_pg[6].'</a></li>';
- $_pn .= '<li><a href="'.$this->path($_pg[7]).'" class="'.$this->pactive($_pg[7]).'">'. $_pg[7] .'</a></li>';
- if (!in_array($mid_right,$_pg)) {
- $_pn .= '<li><span>...</span></li>';
- $_pn .= '<li><a href="'.$this->path($mid_right).'" class="'.$this->pactive($mid_right).'">'.$mid_right.'</a></li>';
- $_pn .= '<li><span>...</span></li>';
- }
- for ($i = 8; $i <= 10; $i++) {
- $active = ($_pg[$i] == $_pnum) ? ' active ' : '';
- $_pn .= '<li><a href="'.$this->path($_pg[$i]).'" class="'.$this->pactive($_pg[$i]).'">'.$_pg[$i].'</a></li>';
- }
- }
- $_pn .= '</ul>';
- return $_pn;
- }
- }
- $pagination = new pagination('n');
- $page_count = 400;
- $per_page = 10;
- echo '<div class="text-center" style="padding: 60px 0;">';
- echo $pagination->show($page_count,$per_page);
- echo '</div>';
- ?>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement