php 分页 limit

什么是分页
分页其实和我们读书翻页的功能是一样的,用户每次看到的不是全部的数据,而是其中的一部分,如果没有在其中找到自己想要的内容,可以通过指定的页码或者翻页的方式转换可见内容。

分页的意义
能否不使用分页,如果数据量少的话可以不分页,但是有成千上万条记录的时候分页就展示了它强大的功能。虽然使用分页会加大系统的复杂度,但是效果很棒。就像一本书只让它在一张纸上显示,那该是怎样的让人头疼的效果。

如何实现分页
要使结果分页显示应使用mysqli中的limit指令。
Limit(索引号,每页条数)
 

页码索引号每页条数
第一页05
第二页55
第三页105
第n页n-1*55


以每页显示5条为例

公式
偏移量:(n-1)*5
每页条数:5

实现分页功能的流程:

  1. 获得页码
  2. 连接数据库
  3. 使用sql语句编写获取分页数据
  4. 数据库传出我们想要的数据
  5. 用sql语句传入我们的数据库
  6. 整理我们得到的数据在页面上展示出来
  7. 获取数据总数,计算页数和显示的数据以及偏移量
  8. 使分页数据初始化,对头部和尾部省略处理

获得页码

<?php
    //传入页码
    $page = $_GET['p'];
?>

连接数据库

<?php
    //mysqli('地址','用户名','密码','数据库名')
    $conn = @new mysqli('localhost','root','','myschool');
    //测试是否连接数据库
    if(empty($_POST)){
        die('连接失败');
    }
    //设置数据库编码格式
    $conn->set_charset('utf8');
?>

 使用sql语句编写获取分页数据

 我们知道limit的语句结构是limit(索引数,每页条数),而且我们在上面的代码中已经获得了页码数,所以我们可以把代码写活,这样,我们的代码可以重用,容易修改。要记住千万不要把代码写死。我们的公式是limit(页码-1*5,每页条数),在设置sql语句是带入这个公式就可以了。

<?php
    //获取页码
    $page = $_GET['p'];
    //设置sql语句
    $sql = "select * from student limit" . ($page-1) * 5 . ",5";
    //执行sql
    $result = mysqli_query($sql);
?>

数据库传出我们想要的数据

读取数据库的三中方法

第一种:使用mysqli_fetch_assoc

mysqli_fetch_assoc:将结果行作为关联、数值数组或两者取回。

返回值:返回与获取的行对应的字符串数组,如果结果集中没有其他行,则返回NULL。

第二种:使用mysqli_fetch_row

mysqli_fetch_row:将结果行作为枚举数组

返回值:返回与获取的行对应的字符串数组,如果结果集中没有其他行,则返回NULL。

第三种:使用mysqli_fetch_array

mysqli_fetch_array:将结果行作为关联、数值数组或两者取回。

返回值:返回与获取的行对应的字符串数组,如果结果集中没有其他行,则返回NULL。

<?php
    //读取数据使用php函数中的mysqli_fetch_assoc
    while($row = mysqli_fetch_assoc($result)){
        
    }
?>

用sql语句传入我们的数据库

$time=time();

$sql="insert into user(id,user,pwd,create_time) values(null,'$user','$pwd',$time)";

 整理我们得到的数据在页面上展示出来

把数据库中的记录取出来显示在页面上同样使用的是sql语句

$sql="select id,user,create_time from user" ;

 获取数据总数,计算页数和显示的数据以及偏移量

<?php
    // 预定义变量$_GET,该数组存储的是get方式请求的数据

    const PAGE_SIZE=2;
    $page = 1;//默认为第一页
    if (isset($_GET['page'])) {
	    $page = $_GET['page'];
    }

    // 计算记录总数
    $sql = "select count(*) from user";
    $result = $conn->query($sql);
    $data = $result->fetch_row();//返回一个索引数组
    $count=$data[0];//用记录数

    // 取整函数(ceil,floor,round)
    $page_count = ceil($count/PAGE_SIZE);

    // page=1,$index=0;page=2,index=2;page=3,index=4
    $index = ($page-1)*PAGE_SIZE;
    $sql="select id,user,create_time from user limit $index," . PAGE_SIZE;
    // echo $sql;
    $result=$conn->query($sql);
?>

使分页数据初始化,对头部和尾部省略处理

<ul class="pager">

       <?php if($page-1>0){ ?>

              <li><a href="<?php echo $_SERVER['PHP_SELF'] ?>?page=<?php echo $page-1 ?>">上一页</a></li>

    <?php } ?>

    <?php if($page+1<=$page_count) { ?>

              <li><a href="<?php echo $_SERVER['PHP_SELF'] ?>?page=<?php echo $page+1 ?>">下一页</a></li>

    <?php } ?>

    </ul>

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值