欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

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>