类别:PHP教程 / 日期:2019-12-01 / 浏览:221 / 评论:0

一、封装设置信息

1、我们可以做一个设置文件config.php。将须要运用到的设置悉数设置为常量,代码以下:

<?php
//数据库服务器
define('DB_HOST', 'localhost');
//数据库用户名
define('DB_USER', 'root');
//数据库暗码
define('DB_PWD', 'secret');
//库名
define('DB_NAME', 'book');
//字符集
define('DB_CHARSET', 'utf8');

2、2.我们将connection.php页面抽取出来,今后须要衔接数据库的时刻只须要包括connection.php文件即可。

代码以下:

<?php
include 'config.php';$conn = mysqli_connect(DB_HOST, DB_USER, DB_PWD, DB_NAME);
if (mysqli_errno($conn))
 {  mysqli_error($conn);
    exit;
  }
mysqli_set_charset($conn, DB_CHARSET);
?>

我们在今后每一个文件运用中直接包括 connection.php文件就可以完成数据库衔接了:

include 'connection.php';

二、显现分页完成

页要完成分页中包括以下几个基础元素:

我们在掌握页码的时刻,都是经由过程URL地址栏传入页码值来完成的页码掌握。在page.php背面接上页码的相干信息,我们就可以算出更多的有用信息。url掌握分页的结果以下:

在代码完成中,是经由过程limit后的偏移量(offset)和数目(num),这两个值真正完成的分页。

limit offset , num

假定每页显现5条。终究获得的分页中掌握limit公式以下:

offset的值为 (n-1)*5
num 为划定的5

三、完成步骤;

1、计算出分页所需参数

1-1、总数

经由过程查询user表的count(id),获得总数$count。
$count_sql = 'select count(id) as c from user';
$result = mysqli_query($conn, $count_sql);
$data = mysqli_fetch_assoc($result);
//获得总的用户数
$count = $data['c'];

1-2、当前页

刚进入page.php页时,url为http://www.php.com/page.php,背面是不存在 ?page=1 页面标识号的。

因而我们须要手动建立一个页面标识号传给当前页码变量$page。

我们畏惧用户传的页面中存在小数等,所以我们做一次强迫的范例转换:(int) $_GET['page']。

第一种写法:

$page = isset($_GET['page']) ? (int) $_GET['page'] : 1;

第二种写法:

if (isset($_GET['page'])) {
    $page = (int) $_GET['page'];
} else {
    $page = 1;
}

1-3、末了一页

每一页一定是一个整数。就跟小学的时刻数学一样。均匀有5.6个人应当预备几个苹果。答案一定是6个。

假如页面出来了20.3个页面,一定是运用进一法取整函数ceil。让分页数变成21。

我们用总数除以每页显现的数据条数,就获得了总页数了。

//每页显现数
$num = 5;
$total = ceil($count / $num);

1-4、上下页非常情况掌握

假如用户的在第一页点击了上一页,在末了一页点击了下一页怎么办呢?

如许的话数据会超出范围,而形成我们分页时无数据显现。

明显这类非常情况须要考虑到。因而,假如在分页时在第一页减一时,我们就让他为第一页。
在末了一页加一时,我们就让他为末了一页,即完成了非常掌握。

if ($page <= 1) {
    $page = 1;
}
if ($page >= $total) {
    $page = $total;
}

2、SQL语句

我们之前说过分页的中心是经由过程SQL语句中的offset和num来掌握每页显现数。

$num = 5;
$offset = ($page - 1) * $num;

我们将$num和$offset应用于SQL语句中:

$sql = "select id,username,createtime,createip from user order by id desc limit $offset , $num";

掌握好URI中的分页值

echo '<tr>
    <td colspan="5">
    <a href="page.php?page=1">首页</a>
    <a href="page.php?page=' . ($page - 1) . '">上一页</a>
    <a href="page.php?page=' . ($page + 1) . '">下一页</a>
    <a href="page.php?page=' . $total . '">尾页</a>
    当前是第 ' . $page . '页  共' . $total . '页
    </td>
    </tr>';

四、团体代码完成

include 'connection.php';
$count_sql = 'select count(id) as c from user';
$result = mysqli_query($conn, $count_sql);
$data = mysqli_fetch_assoc($result);
//获得总的用户数
$count = $data['c'];
$page = isset($_GET['page']) ? (int) $_GET['page'] : 1;
/*
if (isset($_GET['page'])) {
    $page = (int) $_GET['page'];
} else {
    $page = 1;
}
 */
 
//每页显现数
$num = 5;
//获得总页数
$total = ceil($count / $num);
if ($page <= 1) {
    $page = 1;
}
if ($page >= $total) {
    $page = $total;
}
$offset = ($page - 1) * $num;
$sql = "select id,username,createtime,createip from user order by id desc limit $offset , $num";
$result = mysqli_query($conn, $sql);
if ($result && mysqli_num_rows($result)) {
    //存在数据则轮回将数据显现出来
    echo '<table width="800" border="1">';
    while ($row = mysqli_fetch_assoc($result)) {
        echo '<tr>';
        echo '<td>' . $row['username'] . '</td>';
        echo '<td>' . date('Y-m-d H:i:s', $row['createtime']) . '</td>';
        echo '<td>' . long2ip($row['createip']) . '</td>';
        echo '<td><a href="edit.php?id=' . $row['id'] . '">编辑用户</a></td>';
        echo '<td><a href="delete.php?id=' . $row['id'] . '">删除用户</a></td>';
        echo '</tr>';
    }
    echo '<tr><td colspan="5"><a href="page.php?page=1">首页</a>  <a href="page.php?page=' . ($page - 1) . '">上一页</a>   <a href="page.php?page=' . ($page + 1) . '">下一页</a>  <a href="page.php?page=' . $total . '">尾页</a>  当前是第 ' . $page . '页  共' . $total . '页 </td></tr>';
    echo '</table>';
} else {
    echo '没有数据';
}
mysqli_close($conn);

以上内容便完成了简朴的分页功用,相相识更多相干内容请接见ki4网:PHP视频教程

以上就是php完成分页的道理及步骤的细致内容,更多请关注ki4网别的相干文章!

打赏

感谢您的赞助~

打开支付宝扫一扫,即可进行扫码打赏哦~

版权声明 : 本文未使用任何知识共享协议授权,您可以任何形式自由转载或使用。

 可能感兴趣的文章