php简单实例:文章分页功能

882次阅读
没有评论

共计 4037 个字符,预计需要花费 11 分钟才能阅读完成。

分页是文章列表,新闻页中常用的一个功能,我们简单来演示一下 PHP 中怎么实现分页的功能。

首先是数据库的建立,我们使用数据库工具创建好数据表中的数据

语法很简单

select * from tableName limit  num1,num2

这是一个限定查询的语句,后面跟两个参数,num1 为从第几个开始查找,num2 为查找的信息的个数

我们大概了解查询语句后就可以写分页函数了

/ 分页的函数
function news($pageNum = 1, $pageSize = 3)
{    $array = array();
    $coon = mysqli_connect("localhost", "root");
    mysqli_select_db($coon, "jereh");
    mysqli_set_charset($coon, "utf8");
    // limit 为约束显示多少条信息,后面有两个参数,第一个为从第几个开始,第二个为长度
    $rs = "select * from n_content limit " . (($pageNum - 1) * $pageSize) . "," . $pageSize;
    $r = mysqli_query($coon, $rs);
    while ($obj = mysqli_fetch_object($r)) {        $array[] = $obj;
    }
    mysqli_close($coon,"jereh");
    return $array;
}

pageNum 为页数,pageSize 为一个页面显示几条数据,在  “select * from tableName limit  num1,num2”这个查询语句中,

num1 就是(pageNum-1)*pageSize,num2 就是 pageSize

这里如果函数没有传递默认参数的话,页数应为 1,注意查询语句中是从 0 开始查询的

然后是总数

// 显示总页数的函数
function allNews()
{    $coon = mysqli_connect("localhost", "root");
    mysqli_select_db($coon, "jereh");
    mysqli_set_charset($coon, "utf8");
    $rs = "select count(*) num from n_content"; // 可以显示出总页数
    $r = mysqli_query($coon, $rs);
    $obj = mysqli_fetch_object($r);
    mysqli_close($coon,"jereh");
    return $obj->num;
}

下面是 当前页 和总页数 的一个函数   里面有一个三目运算符

<?php
   @$allNum = allNews();
   @$pageSize = 3; // 约定每页显示的信息条数
   @$pageNum = empty($_GET["pageNum"])?1:$_GET["pageNum"];
   @$endPage = ceil($allNum/$pageSize); // 总页数
   @$array = news($pageNum,$pageSize);
   ?>

列表页循环数组

<table border="1" style="text-align: center" cellpadding="0">
    <tr>
        <td> 编号 </td>
        <td> 新闻标题 </td>
        <td> 来源 </td>
        <td> 点击率 </td>
        <td> 发布日期 </td>
    </tr>
    <?php
    foreach($array as $key=>$values){
        echo "<tr>";
        echo "<td>{$values->id}</td>";
        echo "<td>{$values->title}</td>";
        echo "<td>{$values->src}</td>";
        echo "<td>{$values->indexs}</td>";
        echo "<td>{$values->times}</td>";
        echo "</tr>";
    }
    ?>
</table>

上一页下一页   可以写一个数组,也可以用以下运算来表示

<a href="?pageNum=1"> 首页 </a>
   <a href="?pageNum=<?php echo $pageNum==1?1:($pageNum-1)?>"> 上一页 </a>
   <a href="?pageNum=<?php echo $pageNum==$endPage?$endPage:($pageNum+1)?>"> 下一页 </a>
   <a href="?pageNum=<?php echo $endPage?>"> 尾页 </a>

来看一下总体的代码

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title> 分页 </title>
   <?php
 
// 分页的函数
function news($pageNum = 1, $pageSize = 3)
{    $array = array();
    $coon = mysqli_connect("localhost", "root");
    mysqli_select_db($coon, "jereh");
    mysqli_set_charset($coon, "utf8");
    // limit 为约束显示多少条信息,后面有两个参数,第一个为从第几个开始,第二个为长度
    $rs = "select * from n_content limit " . (($pageNum - 1) * $pageSize) . "," . $pageSize;
    $r = mysqli_query($coon, $rs);
    while ($obj = mysqli_fetch_object($r)) {        $array[] = $obj;
    }
    mysqli_close($coon,"jereh");
    return $array;
}
 
// 显示总页数的函数
function allNews()
{    $coon = mysqli_connect("localhost", "root");
    mysqli_select_db($coon, "jereh");
    mysqli_set_charset($coon, "utf8");
    $rs = "select count(*) num from n_content"; // 可以显示出总页数
    $r = mysqli_query($coon, $rs);
    $obj = mysqli_fetch_object($r);
    mysqli_close($coon,"jereh");
    return $obj->num;
}
 
    @$allNum = allNews();
    @$pageSize = 3; // 约定没页显示几条信息
    @$pageNum = empty($_GET["pageNum"])?1:$_GET["pageNum"];
    @$endPage = ceil($allNum/$pageSize); // 总页数
    @$array = news($pageNum,$pageSize);
    ?>
</head>
<body>
<table border="1" style="text-align: center" cellpadding="0">
    <tr>
        <td> 编号 </td>
        <td> 新闻标题 </td>
        <td> 来源 </td>
        <td> 点击率 </td>
        <td> 发布日期 </td>
    </tr>
    <?php
    foreach($array as $key=>$values){
        echo "<tr>";
        echo "<td>{$values->id}</td>";
        echo "<td>{$values->title}</td>";
        echo "<td>{$values->src}</td>";
        echo "<td>{$values->indexs}</td>";
        echo "<td>{$values->times}</td>";
        echo "</tr>";
    }
    ?>
</table>
<div>
    <a href="?pageNum=1"> 首页 </a>
    <a href="?pageNum=<?php echo $pageNum==1?1:($pageNum-1)?>"> 上一页 </a>
    <a href="?pageNum=<?php echo $pageNum==$endPage?$endPage:($pageNum+1)?>"> 下一页 </a>
    <a href="?pageNum=<?php echo $endPage?>"> 尾页 </a>
 
</div>
 
</body>
</html>

正文完
 0