共计 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>
正文完