php 带省略号的分页,php带省略号的分页

/**

* php分页类,支持动态静态url

*/

class Pager {

public $url;

private $maxpageno;

private $pageno;

private $suffix = ''; //静态文件后缀

/**

*

* @param int $total 总数

* @param int $pagesize 每页数

* @param string $url

* @param int $maxpageno 最多页码数 ,包括省略不包括首页上页等,>=7

*/

function __construct($total, $pagesize, $url, $maxpageno = 7) {

$this->pageno = ceil($total / $pagesize);

$this->url = $url;

$this->maxpageno = $maxpageno < 7 ? 7 : $maxpageno;

}

function pagelist($curpage = 1, $curclass = 'in') {

if ($pos = strrpos($this->url, '.')) {

$this->suffix = substr($this->url, $pos);

$this->url = substr($this->url, 0, $pos);

}

//首页上页下页末页

$index_url = $pre_url = $next_url = $end_url = 'javascript:void(0)';

if ($curpage > 1) {

$index_url = "{$this->url}1{$this->suffix}";

$pre_url = $this->url . ($curpage - 1) . $this->suffix;

}

if ($curpage < $this->pageno) {

$end_url = "{$this->url}{$this->pageno}{$this->suffix}";

$next_url = $this->url . ($curpage + 1) . $this->suffix;

}

//省略

if ($this->pageno > $this->maxpageno) {

$half = floor(($this->maxpageno - 4) / 2);

$half_start = $curpage - $half + 1;

if ($this->maxpageno % 2 !== 0) --$half_start;

$half_end = $curpage + $half;

}

if (($this->pageno - $curpage) < ($this->maxpageno - 3)) {

$half_start = $this->pageno - $this->maxpageno + 3;

unset($half_end);

}

if ($curpage <= ($this->maxpageno - 3)) {

$half_end = $this->maxpageno - 2;

unset($half_start);

}

$page = $this->getpage($index_url, ' class="index"', '首页') . $this->getpage($pre_url, ' class="pre"', '上一页');

for($i = 1; $i <= $this->pageno; $i++) {

if (isset($half_start) && $i < $half_start && $i > 1) {

if ($i == 2) $page .= $this->getpage('javascript:void(0)', ' class="pageinfo"', '...');

continue;

}

if (isset($half_end) && $i > $half_end && $i < $this->pageno) {

if ($i == ($half_end + 1)) $page .= $this->getpage('javascript:void(0)', ' class="pageinfo"', '...');

continue;

}

if ($i == $curpage) {

$in = " class='{$curclass}'";

$url = 'javascript:void(0)';

} else {

$in = '';

$url = $this->url . $i . $this->suffix;

}

$page .= $this->getpage($url, $in, $i);

}

$page .= $this->getpage($next_url, ' class="pre"', '下一页') . $this->getpage($end_url, ' class="index"', '末页');

return $page;

}

private function getpage($url, $class, $i) {

return "

{$i}";

}

}

$curpage = isset($_GET['page']) ? $_GET['page'] : 1;

$page = new Pager(35, 2, '?page=');

?>

动态分页:

=$page->pagelist($curpage)?>

静态分页,看url:

$page->url = '/html/news/list_.html';

echo $page->pagelist($curpage);

?>

css:

ul,li,p{list-style:none;margin:0;padding:0}

a{text-decoration:none;}

/*分页*/

.pagelist,p{width: 600px;margin: 0 auto;height: 25px;padding-top: 10px;}

.pagelist li{float: left;}

.pagelist a{display: block;width: 22px;height: 19px;line-height:20px;border: 1px solid #e3e3e3;background: url(list.gif) repeat-x;text-align: center;color: #676765;font-size: 12px;margin-left: 5px;}

.pagelist li.in a{background: url(list_in.gif) repeat-x;border-color: #b5936d;color: #fff}

.pagelist li.index a{width: 40px;}/*首页*/

.pagelist li.pre a{width: 55px;}/*上一页*/

.pagelist li.pageno a{width: 35px;}/*省略*/

.pagelist .pageinfo{font-size: 12px;}

p{font:14px/20px 'Microsoft Yahei';}

图片:

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
``` # 定义当前页和总页数 $current_page = 1; $total_pages = 10; # 定义分页器最多显示的页码数 $max_pages = 5; # 计算分页器起始页码和结束页码 $start_page = $current_page - floor($max_pages / 2); if ($start_page < 1) { $start_page = 1; } $end_page = $start_page + $max_pages - 1; if ($end_page > $total_pages) { $end_page = $total_pages; $start_page = $end_page - $max_pages + 1; if ($start_page < 1) { $start_page = 1; } } # 输出分页器 echo '<ul class="pagination">'; if ($current_page > 1) { echo '<li><a href="?page=' . ($current_page - 1) . '">上一页</a></li>'; } if ($start_page > 1) { echo '<li><a href="?page=1">1</a></li>'; if ($start_page > 2) { echo '<li>...</li>'; } } for ($i = $start_page; $i <= $end_page; $i++) { if ($i == $current_page) { echo '<li class="active"><a href="#">' . $i . '</a></li>'; } else { echo '<li><a href="?page=' . $i . '">' . $i . '</a></li>'; } } if ($end_page < $total_pages) { if ($end_page < $total_pages - 1) { echo '<li>...</li>'; } echo '<li><a href="?page=' . $total_pages . '">' . $total_pages . '</a></li>'; } if ($current_page < $total_pages) { echo '<li><a href="?page=' . ($current_page + 1) . '">下一页</a></li>'; } echo '</ul>'; ``` 上面的代码是php代码,如果需要转换为jq代码,可以按照以下步骤进行: 1. 将php变量改为jq变量,例如将"$current_page"改为"current_page"; 2. 将php的"echo"改为jq的"$().append()"; 3. 将php的"."改为jq的"+"; 4. 将php的";"改为jq的";"或者省略掉。 转换后的代码如下所示: ``` # 定义当前页和总页数 var current_page = 1; var total_pages = 10; # 定义分页器最多显示的页码数 var max_pages = 5; # 计算分页器起始页码和结束页码 var start_page = current_page - Math.floor(max_pages / 2); if (start_page < 1) { start_page = 1; } var end_page = start_page + max_pages - 1; if (end_page > total_pages) { end_page = total_pages; start_page = end_page - max_pages + 1; if (start_page < 1) { start_page = 1; } } # 输出分页器 $('ul.pagination').empty(); if (current_page > 1) { $('ul.pagination').append('<li><a href="?page=' + (current_page - 1) + '">上一页</a></li>'); } if (start_page > 1) { $('ul.pagination').append('<li><a href="?page=1">1</a></li>'); if (start_page > 2) { $('ul.pagination').append('<li>...</li>'); } } for (var i = start_page; i <= end_page; i++) { if (i == current_page) { $('ul.pagination').append('<li class="active"><a href="#">' + i + '</a></li>'); } else { $('ul.pagination').append('<li><a href="?page=' + i + '">' + i + '</a></li>'); } } if (end_page < total_pages) { if (end_page < total_pages - 1) { $('ul.pagination').append('<li>...</li>'); } $('ul.pagination').append('<li><a href="?page=' + total_pages + '">' + total_pages + '</a></li>'); } if (current_page < total_pages) { $('ul.pagination').append('<li><a href="?page=' + (current_page + 1) + '">下一页</a></li>'); } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值