Blogger Information
Blog 43
fans 3
comment 1
visits 30399
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
分页与分页功能封装+2018年5月2日01时45分
KongLi的博客
Original
852 people have browsed it

使用 mysqli 进行分页数据查询,实现上一页、下一页、中间页码、以前下拉框自选页码查询分页数据,实现分页有以下几点

/**

 * 1. LIMIT 0,5 参数的作用: 偏移量与显示数量

 * 2. 如何控制每页显示的数量

 * 3. 接收GET参数,用p表示当前页数,每页显示5条

 * 4. 当前偏移量的计算公式: (页数-1)*每页显示的数量

 *    offset = (page-1)*num

 */


分页效果:

QQ截图20180502012853.png


具体实现如下:

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
 content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>分页查询</title>
    <link rel="stylesheet" href="css/style.css">
</head>
<body>
<?php

//导入分页函数库
require '../lib/func_page.php';

//连接数据库
$db = mysqli_connect('127.0.0.1','root','root','php');

//获取请求的页数
$page = isset($_GET['p'])?$_GET['p']:1;
//$offset = ($page-1)*5;
$num=5; //每页显示的数量
$table = 'staff'; //要查询的表

//$sql = "SELECT * FROM staff LIMIT {$offset},{$num};";
//$res = mysqli_query($db,$sql);
//$rows = mysqli_fetch_all($res,MYSQLI_ASSOC);

//获取总页数分2步:1.获取总记录数,2.再除以每次的显示数量,结果向上取整
//$number = mysqli_query($db,"SELECT COUNT(*) FROM staff");
//list($total) = mysqli_fetch_row($number); //总记录数保存到变量$total中
//$pages = ceil($total / $num);  //获取到总页数 $pages
//执行函数库中的方法,并处理返回的数据
$data = func_page($db,$table,$page,$num);
$rows = $data['rows'];
$pages=$data['pages'];

//上一页
$lpages=(($page-1)==0)? 1 : ($page-1);

//下一页
$rpages=(($page+1)>$pages)?$pages:($page+1);
?>
 <table>
        <caption>信息表</caption>
        <tr>
            <th>ID</th>
            <th>姓名</th>
            <th>性别</th>
            <th>年龄</th>
            <th>工资</th>
        </tr>
        <!--使用循环得到查询处理过后的数据-->
 <?php foreach ($rows as $row) :?>
 <tr>
            <td><?php  echo $row['staff_id']?></td>
            <td><?php  echo $row['name']?></td>
            <td><?php  echo $row['sex']==0?'男':'女'?></td>
            <td><?php  echo $row['age']?></td>
            <td><?php  echo $row['salary']?></td>
        </tr>
        <?php endforeach; ?>
 </table>
    <div class="pages">
        <p>
            <a href="http://127.0.0.1/4027/index.php?p=1">首页</a>
            <a href="http://127.0.0.1/4027/index.php?p=<?php echo $lpages ?>">上一页</a>
            <!--循环列出中间部分的页码-->
 <?php for ($i=1; $i<=$pages; $i++) :?>
 <!--将中间显示的页码实现高亮-->
 <a class="<?php if($page==1) echo ''; else if($page==$i) echo 'heigh'?>" href="http://127.0.0.1/4027/index.php?p=<?php echo $i ?>"><?php echo $i?></a>
            <?php endfor; ?>
 <a href="http://127.0.0.1/4027/index.php?p=<?php echo $rpages ?>">下一页</a>
            <a href="http://127.0.0.1/4027/index.php?p=<?php echo $pages ?>">尾页</a>
        </p>
        <form action="" id="change_page">
            第
 <select name="p" id="sp" onchange="Change()">
                <?php for ($i=1; $i<=$pages; $i++): ?>
 <option value="<?php echo $i?>" <?php if($_GET['p']==$i)echo 'selected' ?>><?php echo $i?></option>
                <?php endfor; ?>
 </select>
            页
 <button>跳转</button>
        </form>
    </div>
<script type="text/javascript">
    //给下拉列表添加 submit 事件实现选中跳转页面
 function Change(){
        var change_page =document.getElementById('change_page')
        change_page.submit()
    }
</script>
</body>
</html>


Page分页函数封装部分:

<?php
/**
 * Created by PhpStorm.
 * User: John
 * Date: 2018/5/2
 * Time: 1:00
 */

//分页函数封装
if(!function_exists('func_page')){

    function func_page($db,$table,$page,$num)
    {
        $offset = ($page-1)*5; //显示当前第几页的数据
        $sql = "SELECT * FROM staff LIMIT {$offset},{$num};"; //查询数据SQL
        $res = mysqli_query($db,$sql); //得到查询的数据结果集
        $rows = mysqli_fetch_all($res,MYSQLI_ASSOC); //处理结果集,设置显示的结果模式

        //获取总页数分2步:1.获取总记录数,2.再除以每次的显示数量,结果向上取整
        $number = mysqli_query($db,"SELECT COUNT(*) FROM staff");
        list($total) = mysqli_fetch_row($number); //总记录数保存到变量$total中
        $pages = ceil($total / $num);  //获取到总页数 $pages

        //返回分页的数据跟总页数量
        return ['rows'=>$rows,'pages'=>$pages];
    }
}


Correction status:Uncorrected

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post