php分页实例详解(亲测可用)

时间:2021-10-02 17:25:57

新闻列表的显示,分页html

转自互联网~

Pager.php

 1 <?php
 2 function page($page, $total, $phpfile, $pagesize=3, $pagelen=3) {
 3     $pagecode = ''; //定义变量,存放分页生成的HTML
 4     $page = intval($page); //避免非数字页码
 5     $total = intval($total); //保证总记录数值类型正确
 6     if (!$total)
 7         return array(); //总记录数为零返回空数组
 8     $pages = ceil($total / $pagesize); //计算总分页
 9 //处理页码合法性
10     if ($page < 1)
11         $page = 1;
12     if ($page > $pages)
13         $page = $pages;
14     ////计算查询偏移量
15     $offset = $pagesize * ($page - 1);
16 //页码范围计算
17     $init = 1; //起始页码数
18     $max = $pages; //结束页码数
19     $pagelen = ($pagelen % 2) ? $pagelen : $pagelen + 1; //页码个数
20     $pageoffset = ($pagelen - 1) / 2; //页码个数左右偏移量
21 //生成html
22     $pagecode = '<div class="page">';
23     $pagecode.="<span>第{$page}页/共{$pages}页</span>"; //第几页,共几页
24 //如果是第一页,则不显示第一页和上一页的连接
25     if ($page != 1) {
26         $pagecode.='<a href="' . $phpfile . '?page=1/">首页</a>'; //第一页
27         $pagecode.='<a href="' . $phpfile . '?page=' . ($page - 1) . '>上一页</a>'; //上一页
28     }
29 //分页数大于页码个数时可以偏移
30     if ($pages > $pagelen) {
31 //如果当前页小于等于左偏移
32         if ($page <= $pageoffset) {
33             $init = 1;
34             $max = $pagelen;
35         } else {//如果当前页大于左偏移
36 //如果当前页码右偏移超出最大分页数
37             if ($page + $pageoffset >= $pages + 1) {
38                 $init = $pages - $pagelen + 1;
39             } else {
40 //左右偏移都存在时的计算
41                 $init = $page - $pageoffset;
42                 $max = $page + $pageoffset;
43             }
44         }
45     }
46 //生成html
47     for ($i = $init; $i <= $max; $i++) {
48         if ($i == $page) {
49             $pagecode.='<span> ' . $i . ' </span>';
50         } else {
51             $pagecode.='<a href="' . $phpfile . '?page=' . $i . '/">' . $i . '</a>';
52         }
53     }
54     if ($page != $pages) {
55         $pagecode.='<a href="' . $phpfile . '?page=' . ($page + 1) . '">下一页</a> '; //下一页
56         $pagecode.='<a href="' . $phpfile . '?page=' . $pages . '">尾页</a>'; //最后一页
57     }
58     echo '<form name=/"selform/">';
59     $pagecode.='<select name=/"page/" onchange=/"document.selform.submit()/">';
60     for ($i = 1; $i <= $pages; $i++) {
61         if ($i == $page) {
62             $pagecode .= "<option selected>" . $i . "</option>";
63         } else {
64             $pagecode .= "<option>" . $i . "</option>";
65         }
66     }
67     $pagecode.="</select></form>";
68     /* End*************我添加的部分**** */
69     $pagecode.='</div>';
70     return array('pagecode' => $pagecode, 'sqllimit' => ' limit ' . $offset . ',' . $pagesize);
71 }
72 
73 ?>

news_all.php

 1 <?php
 2 header("content-type:text/html; charset=utf-8");
 3 include "Pager.php";
 4 $phpfile = 'news_all.php'; //页面文件名
 5 $page = isset($_GET['page']) ? $_GET['page'] : 1; //默认页码
 6 include 'conn.php';
 7 mysql_query("set names utf8");
 8 $counts = mysql_num_rows(mysql_query('select * from news')); //获取需要的数据总条数
 9 $sql = 'select * from news'; //定义查询语句SQL
10 $getpageinfo = page($page, $counts, $phpfile); //调用函数,生成分页HTML 和 SQL LIMIT 子句
11 $sql.=$getpageinfo['sqllimit']; //组合完整的SQL语句
12 $data = $row = array(); //初始化数组
13 $result = mysql_query($sql); //获取结果集
14 //将数据装入$data数组
15 echo "<table border='1'>";
16 while ($row = mysql_fetch_array($result)) {
17     echo "<tr>";
18 //    echo "<td>".$row['n_date']."</td>";
19     echo "<td>" . $row['n_title'] . "</td>";
20     echo "</tr>";
21 }
22 echo "</table>";
23 ?>
24 <?php
25 
26 echo $getpageinfo['pagecode']; //显示分页的html代码  
27 ?>