php原生开发新闻站之新闻列表分页
我们上一节课给大家讲述了新闻列表的功能制作,上节课中我们新闻列表页下面有一个分页功能!那么我们今天就来给大家介绍一下关于分页实现的制作过程!
首先我们创建一个php文件page.php,这个文件里面我们放制作分页的代码!
第一步:一样,就是连接数据库!
// 显示所有的错误 error_reporting(E_ALL & ~E_NOTICE ); // 连接mysql数据库 $link = mysqli_connect('localhost','root', 'root'); if (!$link) { echo "connect mysql error!"; exit(); } // 选中数据库 news为数据库的名字 $db_selected = mysqli_select_db($link, 'news'); if (!$db_selected) { echo "<br>selected db error!"; exit(); } // 设置mysql字符集 为 utf8 $link->query("set names utf8");
第二步:分页功能的实现,在哪个列表里我们就需要查询哪个数据表,我们是新闻的分页,那么我们SQL语句就要查新闻的表
// 查询新闻表中的数据 $sql = "select * from new where 1 "; // 查询语句 $sql_count = "select count(*) as amount from new where 1 "; // 统计总记录数 $sql .= "order by id asc";
接着就是获取总记录条数:
// 获取总记录条数 $result_amount = mysqli_query($link, $sql_count); $arr_amount = mysqli_fetch_array(mysqli_query($link, $sql_count), MYSQL_ASSOC); // 总记录条数 $amount = $arr_amount['amount'];
然后设置总页数,以及总页码
// 每页的记录条数 $page_size = 4; // 总页码 $max_page = ceil( $amount / $page_size );
大家都知道分页有个公式算法,我们就根据这个公式来计算上一页,下一页,尾页!
// 获取当前页码 $page = intval($_GET['page']); // 获取page值,并转成int if( $page <= 0 || $page > $max_page){ // 如果page值小于0,或是大于最大页码 $page = 1; } // 上一页 $pre_page = $page -1; if( $pre_page < 1 ){ // 如果上一页小于1 $pre_page = 1; } // 下一页 $next_page = $page + 1; if( $next_page > $max_page ){ // 如果下一页大于最大页码 $next_page = $max_page; } // 分页计算, 计算分页的offset $offset = ($page - 1 ) * $page_size; $sql .= " limit $offset, $page_size ";
到这里我们的分页代码就写完了,然后在新闻列表页 引入这个分页文件
<?php include_once "../common/page.php"; ?>
最后在新闻列表页的下面找到分页的位置,输出分页
<div class="pagelist"> <a href="new_list.php">首页</a> <?php if( $page > 1 ){ ?> <a href="new_list.php?page=<?php echo $pre_page;?>">上一页</a> <? } if( $page < $max_page ){ ?> <a href="new_list.php?page=<?php echo $next_page;?>">下一页</a> <? } ?> <a href="new_list.php?page=<?php echo $max_page;?>">末页</a> / 总页码 <font color="red"><?php echo $max_page;?></font>页 当前页码 <font color="red"><?php echo $page;?></font>页 </div>
OK!分页就制作完成了!
说明:这里我的可能有点麻烦,大家也可以在网站下载分页类,然后直接调用!但是你要知道分页实现的原理~