博主辛苦了,我要打赏银两给博主,犒劳犒劳站长。
【摘要】上次我的服务器被入侵了,导致我之前写过的许多文章都找不回来了,目前的文章都是之前的备份。今天的文章讲的是有关PHP分页的,很多时候数据库中的数据往往是上万条记录,而这个时候如果一次性统统取出来,如果不对分页进行处理,则会有特别多的页码,显得格外不好看。
首先看一下效果图:
接着直接上完整代码:
<style>
*{font-size:12px;}
a{
border:1px solid #AACCEE;
min-width:20px;
height:20px;
margin:5px;
display:inline-block;
float:left;
text-decoration:none;
font-size:12px;
text-align:center;
line-height:20px;
}
.cur_page{
color:#DB450B;
font-weight:800;
}
</style>
<?php
// 需要修改的内容,改成自己的相应信息:
// $username,$passwrod,$database,$table_name
// 首先,设置页面字符集
header("Content-Type:text/html;charset=utf-8");
// 设置页面最大执行时间
ini_set("max_execution_time",86400);
// 连接数据库
$host = '127.0.0.1';
$username = 'root';
$password = '123456';
$database = 'test';
$link = mysqli_connect($host,$username,$password);
if(!$link)
{
die('数据库连接失败');
}
$db = mysqli_select_db($link,$database);
if(!$db)
{
die('数据库选择失败');
}
// 设置连接字符集为utf-8
$sql = 'set names utf8';
$query = mysqli_query($link,$sql);
if(!$query)
{
die('执行SQL查询语句失败');
}
// 查询表中的数据
$table_name = "item";
$pagesize = 6; // 每页显示
$bothNum = 3; // 当前页左右各显示页码个数
if(isset($_GET['page']) && $_GET['page'] != '')
{
$page = $_GET['page'];
}else
{
$page = 1;
}
$sql = "SELECT id FROM ".$table_name;
$query = mysqli_query($link,$sql);
if(!$query)
{
die('执行查询失败');
}
$tot_num = mysqli_num_rows($query); // 获取总数
$tot_pages = ceil($tot_num / $pagesize); // 总页数
$parameters = "a=1"; // 参数列表
// 下一页
if($page >= $tot_pages)
{
$next_page = $tot_pages;
}else
{
$next_page = $page + 1;
}
// 上一页
if($page <= 1)
{
$pre_page = 1;
}else
{
$pre_page = $page - 1;
}
// 分页查询
$sql = "SELECT id,kwords FROM ".$table_name ." limit ".($page - 1) * $pagesize.",".$pagesize;
$query = mysqli_query($link,$sql);
if(!$query)
{
die('执行查询失败');
}
// 从结果集放入到数组中
$tot = mysqli_num_rows($query); // 获取总数
while($row = mysqli_fetch_assoc($query))
{
$data[] = $row;
}
// 输出数据
foreach($data as $k => $v)
{
echo $v['id'].'-'.$v['kwords'];
echo '<br />';
}
?>
<div>
<a href="?<?php echo $parameters;?>&page=1">首页</a>
<a href="?<?php echo $parameters;?>&page=<?php echo $pre_page;?>">上一页</a>
<?php
// 显示第一页
if($page > 1 && $page - $bothNum > 1)
{
echo '<a href="?'.$parameters.'&page=1">1</a>';
}
// 显示省略号
if($page - $bothNum > 2)
{
echo '<a>…</a>';
}
// 当前页的左边
for($i = $bothNum;$i >= 1;$i--)
{
if(($page - $i) < 1 )
{
// 当前页左边花最多 bothNum 个数字
continue;
}
$lastPage = $page - $i;
echo '<a href="?'.$parameters.'&page='.$lastPage.'">'.$lastPage.'</a>';
}
// 当前页
echo '<a href="?'.$parameters.'&page='.$page.'" class="cur_page">'.$page.'</a>';
// 当前页的右边
for($i = 1;$i <= $bothNum;$i++)
{
if(($page + $i) > $tot_pages)
{
// 当前页右边花最多 bothNum 个数字
break;
}
$lastPage = $page + $i;
echo '<a href="?'.$parameters.'&page='.$lastPage.'">'.$lastPage.'</a>';
}
// 显示省略号
if($page + $bothNum < $tot_pages - 1)
{
echo '<a>…</a>';
}
// 显示最后一页
if($page < $tot_pages && $page + $bothNum < $tot_pages)
{
echo '<a href="?'.$parameters.'&page='.$tot_pages.'">'.$tot_pages.'</a>';
}
?>
<a href="?<?php echo $parameters;?>&page=<?php echo $next_page;?>">下一页</a>
<a href="?<?php echo $parameters;?>&page=<?php echo $tot_pages;?>">尾页</a>
</div>
<?php
// 关闭MySQL连接
mysqli_close($link);
?>
版权归 马富天个人博客 所有
本文链接地址:http://www.mafutian.com/362.html
转载请务必注明出处,小生将不胜感激,谢谢! 喜欢本文或觉得本文对您有帮助,请分享给您的朋友 ^_^
顶1
踩0
评论审核未开启 |
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
||