PHP 原创!控制 + 模型 + 列表渲染 + 算法分页,没什么好说的,自己看吧...- PHP 学习笔记 - php中文网博客
最编程
2024-04-15 12:43:50
...
<?php
require 'userdata.php';
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>【久益一修】装修工人信息表</title>
<link rel="stylesheet" href="userstyle.css">
</head>
<body>
<table>
<caption>【久益一修】装修工人信息表</caption>
<thead>
<tr>
<td>编号</td>
<td>姓名</td>
<td>年龄</td>
<td>工种</td>
<td>擅长技能</td>
<td>操作</td>
</tr>
</thead>
<tbody>
<?php foreach($users as $user):?>
<tr>
<td><?= $user['id']?></td>
<td><?= $user['uname']?></td>
<td><?= $user['age']?></td>
<td><?= $user['type']?></td>
<td><?= $user['skill']?></td>
<td>
<button onclick="location.href='userhandle.php?action=edit&id=<?=$user['id']?>'">编辑</button>
<button onclick="location.href='userhandle.php?action=delete&id=<?=$user['id']?>'">删除</button>
</td>
</tr>
<?php endforeach;?>
</tbody>
</table>
<!-- ======================================= -->
<?php
// 分页条显示的页数
$showPages =5;
// 分页条的起始页码值
$startPage = 1;
// 分页条的终止页码值
$endPage = $pages;
// 分页条的终止页码相对于当前页码的偏移量: 分页条显示的页数减1再除2
$offsetPage = ($showPages - 1) / 2;
// 只有当前分页条显示页码数量 < 总页数时, 才有必要显示出省略标志
if ($showPages < $pages) {
//如果当前页码大于偏移量加1, 应该显示省略标记
if ($page > $offsetPage + 1) {
$startOmit = '...';
}
// 如果当前页, 大于偏移量, 就需要重置一下新分页条的起止点页码
if ($page > $offsetPage) {
// 当前分页条的起始页码 = 当前页码 - 偏移量
$startPage = $page - $offsetPage;
// 当前分页条的结束页码 = 当前页码 + 偏移量
$endPage = $page + $offsetPage;
// 当前页码 + 偏移量, 有可能会大于总页数,所以要进行检测
if ($endPage > $pages) {$endPage = $pages; }
} else {
// 如果当前页码 < 偏移量, 如当前是第2页,当前页码就等于偏移量
// 此时需要重新设置新分页条的起始页码
$startPage = 1;
//结束页码就等于显示页码数量
$endPage = $showPages;
}
// 如果当前页 + 偏移量 > 总页数
if ($page + $offsetPage > $pages) {
// 例如总页码10, 当前为9页, 则9+2>10, 此时需要向前面借位偏移,才能保证仍然显示为5个页码
// 此时, 新的起始位置 = 当前位置 - (当前页 + 偏移量 - 原来的结束位置)
$startPage = $page - $offsetPage-1 ;
}
// 只要当前显示的页码数量 < 总页数 并且 当前页+偏移量也小于总页数, 那就应该显示出后面的省略号
if ($showPages < $pages && $page + $offsetPage < $pages) $endOmit = '...';
}
?>
<!-- ======================================= -->
<p>
<!-- 首页-->
<a href="<?php echo $_SERVER['PHP_SELF'] . '?p=1' ?>">首页</a>
<!--防止向前越界-->
<?php $prev = $page - 1; if ($page == 1) { $prev = 1;} ?>
<a href="<?php echo $_SERVER['PHP_SELF'] . '?p=' . $prev ?>">上一页</a>
<!--省略标插入:在下一页的后面-->
<?php if (isset($startOmit)): ?><a href="javascript:;"><?php echo $startOmit ?></a><?php endif ?>
<!-- ======================================= -->
<!-- 显示页码-->
<!--显示页码是变量:$startPage, 动态的与新分页条保持一致-->
<?php for ($i = $startPage; $i <= $endPage; $i++) : ?>
<!-- 当前页面高亮显示 -->
<?php $active = ($i == $page) ? 'active' : null;
// 跳转页码的地址
$jump = sprintf('%s?p=%s', $_SERVER['PHP_SELF'], $i);
?>
<a href="<?php echo $jump ?>" class="<?php echo $active ?>"><?php echo $i ?></a>
<?php endfor; ?>
<!-- ======================================= -->
<!-- 下一页-->
<!-- 下一页=当前页+1,如果当前页=总页数,下一页=总页数 ,防止向后越界-->
<?php $next = $page + 1; if ($page == $pages) { $next = $pages; } ?>
<!--省略标记插入:在下一页的前面-->
<?php if (isset($endOmit)): ?><a href="javascript:;"><?php echo $endOmit ?></a><?php endif ?>
<a href="<?php echo $_SERVER['PHP_SELF'] . '?p=' . $next ?>">下一页</a>
<a href="<?php echo $_SERVER['PHP_SELF'] . '?p=' . $pages ?>">尾页</a>
</p>
</body>
</html>
上一篇: mybatis 加多表查询 + 分页