php || 分页(mysql)

获取数据库中的数据,php实现分页显示,需要用到Mysql语句中的limit命令。
1.display.php代码:

<html>
<head>
    <meta http-equiv="CONTENT-TYPE" content="text/html;">
</head>
<title>分页</title>
<style>
        div.page{
                margin:1px;
        }
        div.page a{
                border: #aa0027 solid 1px;
                text-decoration: none;
                padding: 2px 5px 2px 5px;
                margin: 2px;
    }
        div.content{
                height: 200px;
        }
</style>

<body>

<?php
         /**获取当前页码,设置第一次打开默认页码**/
        //trim($_GET['p'])获取get方法中p的值
        $page= isset($_GET['p']) ? trim($_GET['p']) : 1;

        //定义一页显示多少条数据
         $pageSize=5;

         /**根据页码取出数据:php->mysql的处理**/
         //连接数据库
         $conn = mysqli_connect('localhost','jsj18137','123456','jsj18137');

         if (!$conn) {
                 die("数据库连接失败:".mysqli_connect_error());
         }

         //设置数据库编码格式,防止乱码
         mysqli_set_charset($conn,"utf8");

         //编写sql获取分页数据SELECT * FROM 表名 LIMIT 起始位置,显示条数.(用来确
定每个页面显示的数据数,每页显示5条信息)
         $sql = "select * from message limit ".($page-1) * $pageSize.",".$pageSize;//(当前页数 - 1 )X 每页条数 ,每页条数

         //把sql语句传送到数据中
         $result = mysqli_query($conn,$sql);

         //处理数据
         echo "<div class='content'>";
         echo "<table border=1 cellspacing=0 width=15%>";
         echo "<tr><td>ID</td><td>名字</td><td>标题</td></tr>";

         while($row = mysqli_fetch_assoc($result)){ //从结果集中取得一行作为关联
数组
                 echo "<tr>";
                 echo "<td>{$row['id']}</td>";
                 echo "<td>{$row['user']}</td>";
                 echo "<td>{$row['title']}</td>";
                 echo "<tr>";
         }

        echo "</table>";
        echo "</div>";

        //释放循环查询结果
        mysqli_free_result($result);

        //获取message表一共有多少行数据
        $to_sql="SELECT COUNT(*)FROM message";
        $to_sql=mysqli_query($conn,$to_sql);
        $to_result=mysqli_fetch_array($to_sql);
        $to=$to_result[0];//$to保存一共有多少行这个结果

        //计算页数
        $to_pages=ceil($to/$pageSize);

        //关闭数据库
        mysqli_close($conn);

        //$_SERVER['PHP_SELF']引用当前网页地址,是系统自动生成的全局变量
        //"?p=".($page-1)."改变当前页面,加1或减1
        //显示数据+分页条
        $page_banner="<div class='page'>";
        //计算偏移量
        if($page>1){//当前页数大于1时,显示首页和上一页
                 $page_banner.="<a href='".$_SERVER['PHP_SELF']."?p=1'>首页</a>";
                 $page_banner.="<a href='".$_SERVER['PHP_SELF']."?p=".($page-1)."'>上一页</a>";
        }

        if ($page<$to_pages){//但当前页数小于总页数时,显示下一页和尾页
                 $page_banner.="<a href='".$_SERVER['PHP_SELF']."?p=".($page+1)."'>下一页</a>";
                 $page_banner.="<a href='".$_SERVER['PHP_SELF']."?p=".($to_pages)."'>尾页</a>";
        }

        $page_banner.="{$to_pages}页";
        echo $page_banner;
?>

</body>
</html>

display.php图:
在这里插入图片描述
2.display1.php代码:

<html>
<head>
    <meta http-equiv="CONTENT-TYPE" content="text/html;">
</head>
<title>分页</title>
<style>

        div.page{
                margin:1px;
        }

        div.page a{
                border: #aa0027 solid 1px;
                text-decoration: none;
                padding: 2px 5px 2px 5px;
                margin: 2px;
        }

        div.page span.current{
                border: #000099 1px solid;background-color: #992b6c;padding: 4px 6px 4px 6px;margin: 2px;color: #fff;
                font-weight: bold;
        }

        div.content{
                height: 200px;
        }
</style>
<body>

<?php
        /**获取当前页码,设置第一次打开默认页码**/
       //trim($_GET['p'])获取get方法中p的值
        $page= isset($_GET['p']) ? trim($_GET['p']) : 1;

        //定义一页显示多少条数据
         $pageSize=5;

        //定义显示左右页面个数(一般是奇数比较好)
         $ShowPage=3;


         /**根据页码取出数据:php->mysql的处理**/
         //连接数据库
         $conn = mysqli_connect('localhost','jsj18137','123456','jsj18137');

         if (!$conn) {
                 die("数据库连接失败:".mysqli_connect_error());
         }

         //设置数据库编码格式,防止乱码
         mysqli_set_charset($conn,"utf8");

         //编写sql获取分页数据SELECT * FROM 表名 LIMIT 起始位置,显示条数.(用来确
定每个页面显示的数据数,每页显示5条信息)
         $sql = "select * from message limit ".($page-1) * $pageSize.",".$pageSize;//(当前页数 - 1 )X 每页条数 ,每页条数

         //把sql语句传送到数据中
         $result = mysqli_query($conn,$sql);

         //处理数据
         echo "<div class='content'>";
         echo "<table border=1 cellspacing=0 width=15%>";
         echo "<tr><td>ID</td><td>名字</td><td>标题</td></tr>";

         while($row = mysqli_fetch_assoc($result)){ //从结果集中取得一行作为关联
数组
                 echo "<tr>";
                 echo "<td>{$row['id']}</td>";
                 echo "<td>{$row['user']}</td>";
                 echo "<td>{$row['title']}</td>";
                 echo "<tr>";
         }

        echo "</table>";
        echo "</div>";
        //释放循环查询结果
        mysqli_free_result($result);

        //获取message表一共有多少行数据
        $to_sql="SELECT COUNT(*)FROM message";
        $to_sql=mysqli_query($conn,$to_sql);
        $to_result=mysqli_fetch_array($to_sql);
        $to=$to_result[0];//$to保存一共有多少行这个结果

        //计算页数
        $to_pages=ceil($to/$pageSize);

        //关闭数据库
        mysqli_close($conn);

        //$_SERVER['PHP_SELF']引用当前网页地址,是系统自动生成的全局变量
        //"?p=".($page-1)."改变当前页面,加1或减1
        //显示数据+分页条
        $page_banner="<div class='page'>";

        //计算当前页面左右显示的偏移量
         $pageffset=($ShowPage-1)/2;

        //计算偏移量
        if($page>1){//当前页数大于1时,显示首页和上一页
                 $page_banner.="<a href='".$_SERVER['PHP_SELF']."?p=1'>首页</a>";
                 $page_banner.="<a href='".$_SERVER['PHP_SELF']."?p=".($page-1)."'>上一页</a>";
        }

        //初始化数据
         $start=1;//开始显示页面
         $end=$to_pages;//最后显示页面
        if ($to_pages>$ShowPage){//总页码大于显示页面

                if($page>$pageffset+1){//当前页面大于偏移量+1,开头显示...
                          $page_banner.="...";
                }

                if ($page>$pageffset){ //当前页数大于偏移量时,开始页面等于当前>页面减1,结束页面看总页面是否大于当前页面加偏移量,是显示结束就当前页面加偏移量>,否则等于总页码
                        $start=$page-$pageffset;
                        $end=$to_pages>$page+$pageffset?$page+$pageffset:$to_pages;
                }else{//当前页面小于等于偏移量时,开始页面为1,结束页面如果总页>码大于显示页面就等于显示页面,否则等于总页码
                        $start=1;
                        $end=$to_pages>$ShowPage?$ShowPage:$to_pages;
                }

                if ($page+$pageffset>$to_pages){//如果当前页面和偏移量之和大于总
页码,开始页面等于开始页面减(当前页面+偏移量-结束页面(总页码))
                        $start=$start-($page+$pageffset-$end);
                }
         }

        //循环显示页码
         for($i=$start;$i<=$end;$i++){
                if ($page == $i) {
                        $page_banner .= "<span class='current'>{$i}</span>";
                } else {
                        $page_banner.="<a href='".$_SERVER['PHP_SELF']."?p=".($i)."'>{$i}</a>";
                }
         }

         //尾部省略,总页数大于显示页数且总页数大于当前页数和偏移量之和,就显示...
         if ($to_pages>$ShowPage && $to_pages>$page+$pageffset){
                $page_banner.="...";
         }
         
        if ($page<$to_pages){//但当前页数小于总页数时,显示下一页和尾页
                 $page_banner.="<a href='".$_SERVER['PHP_SELF']."?p=".($page+1)."'>下一页</a>";
                 $page_banner.="<a href='".$_SERVER['PHP_SELF']."?p=".($to_pages)."'>尾页</a>";
        }

        $page_banner.="{$to_pages}页";
        echo $page_banner;
?>
</body>
</html>

display1.php图:
在这里插入图片描述
在这里插入图片描述
3.display2.php代码:

<html>
<head>
    <meta http-equiv="CONTENT-TYPE" content="text/html;">
</head>
<title>分页</title>
<style>
        div.page{
                margin:1px;
                /*text-align: center;居中*/
        }
        div.page a{
                border: #aa0027 solid 1px;
                text-decoration: none;
                padding: 2px 5px 2px 5px;
                margin: 2px;
        }
        div.page form{
                display: inline;
        }
        div.content{
                height: 200px;
        }
</style>

<body>

<?php
         /**获取当前页码**/
        $page= isset($_GET['p']) ? trim($_GET['p']) : 1;

        //定义一页显示多少条数据
         $pageSize=5;

         /**根据页码取出数据:php->mysql的处理**/
         //连接数据库
         $conn = mysqli_connect('localhost','jsj18137','123456','jsj18137');

         if (!$conn) {
                 die("数据库连接失败:".mysqli_connect_error());
         }

         //设置数据库编码格式,防止乱码
         mysqli_set_charset($conn,"utf8");
         //编写sql获取分页数据SELECT * FROM 表名 LIMIT 起始位置,显示条数.(用来确
定每个页面显示的数据数,每页显示5条信息)
         $sql = "select * from message limit ".($page-1) * $pageSize.",".$pageSize;//(当前页数 - 1 )X 每页条数 ,每页条数

         //把sql语句传送到数据中
         $result = mysqli_query($conn,$sql);

         //处理数据
         echo "<div class='content'>";
         echo "<table border=1 cellspacing=0 width=15%>";
         echo "<tr><td>ID</td><td>名字</td><td>标题</td></tr>";

         while($row = mysqli_fetch_assoc($result)){ //从结果集中取得一行作为关联
数组
                 echo "<tr>";
                 echo "<td>{$row['id']}</td>";
                 echo "<td>{$row['user']}</td>";
                 echo "<td>{$row['title']}</td>";
                 echo "<tr>";
         }

        echo "</table>";
        echo "</div>";


        //释放循环查询结果
        mysqli_free_result($result);

        //获取message表一共有多少行数据
        $to_sql="SELECT COUNT(*)FROM message";
        $to_sql=mysqli_query($conn,$to_sql);
        $to_result=mysqli_fetch_array($to_sql);
        $to=$to_result[0];//$to保存一共有多少行这个结果

        //计算页数
        $to_pages=ceil($to/$pageSize);

        //关闭数据库
        mysqli_close($conn);
        //$_SERVER['PHP_SELF']引用当前网页地址,是系统自动生成的全局变量
        //"?p=".($page-1)."改变当前页面,加1或减1
        //显示数据+分页条
        $page_banner="<div class='page'>";

        //计算偏移量
        if($page>1){//当前页数大于1时,显示首页和上一页
                 $page_banner.="<a href='".$_SERVER['PHP_SELF']."?p=1'>首页</a>";
                 $page_banner.="<a href='".$_SERVER['PHP_SELF']."?p=".($page-1)."'>上一页</a>";
        }

        if ($page<$to_pages){//但当前页数小于总页数时,显示下一页和尾页
                 $page_banner.="<a href='".$_SERVER['PHP_SELF']."?p=".($page+1)."'>下一页</a>";
                 $page_banner.="<a href='".$_SERVER['PHP_SELF']."?p=".($to_pages)."'>尾页</a>";
        }

        $page_banner.="{$to_pages}";

        //通过get方式提交p的值。跳转不同的页面,可直接填写跳到那一页
        $page_banner.="<form action='display2.php' method='get'>";
        $page_banner.="到第<input type='text'size='2'name='p'>";
        $page_banner.="<input type='submit'value='确定'>";
        $page_banner.="</form>";

        echo $page_banner;
?>
</body>
</html>

display2.php图:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值