代码改变世界

类似百度的分页的函数

2016-12-03 19:25  钟帜铭哥哥  阅读(221)  评论(0编辑  收藏  举报

//分页
//先设置当前选中的页码数
$pageNum = isset($_GET['num'])? $_GET['num']:1;
//定义每一页需要显示的记录数
$rowsPerPage = 5;
//查询总记录数
$sql = "select count(*) from reply where rep_pub_id = $pub_id" ;
$result = my_query($sql);
$rows_num = mysql_fetch_row($result);
$rowCount = $rows_num[0];//总记录数

//计算总页数
$pages = ceil($rowCount/$rowsPerPage);

//拼凑出页码字符串
$strpage = '';
//拼凑出首页
$strpage .="<a href='./show.php?pub_id=$pub_id&action=reply&num=1'>首页</a>";
//拼凑出上一页
$preNum = $pageNum == 1 ? 1:$pageNum-1;
$strpage .="<a href='./show.php?pub_id=$pub_id&action=reply&num=$preNum'>上一页</a>";

//仿百度分页中间数字部分
//确定显示的初始页$starNum
if($pageNum <= 3){
$starNum = 1;
}else{
$starNum = $pageNum-2;
}
//确定初始页的最大值
if($starNum >= $pages-4){
$starNum = $pages-4;
}
//防止页码出现负值
if($starNum <=1){
$starNum =1;
}
//确定显示的最后一页$endNum
$endNum = $starNum + 4;
//防止最后一页出现越界
if($endNum >=$pages){
$endNum =$pages;
}
//拼凑出中间的数字页码
for($i=$starNum;$i<=$endNum;$i++){
//加css效果
if($i == $pageNum){
$strpage .= "<a href='./show.php?pub_id=$pub_id&action=reply&num=$i'><font style='text-decoration:underline;color:red;'>$i</font></a>";
}else{
$strpage .= "<a href='./show.php?pub_id=$pub_id&action=reply&num=$i'>$i</a>";
}
}

 

//拼凑出下一页
$nextNum = $pageNum == $pages ? $pages:$pageNum+1;
//如果一条数据都没有就默认为1
$nextNum = $pages == 0 ? 1:$pageNum+1;
$strpage .="<a href='./show.php?pub_id=$pub_id&action=reply&num=$nextNum'>下一页</a>";
//拼凑出尾页
//如果一条数据都没有就默认为1
$pageend = $pages == 0 ? 1:$pages;
$strpage .="<a href='./show.php?pub_id=$pub_id&action=reply&num=$pageend'>尾页</a>";
#分页到此结束
//偏移量
$offset = ($pageNum-1) * $rowsPerPage;
// 7, 提取回复者的信息
$rep_sql = "select * from reply where rep_pub_id=$pub_id order by rep_time limit {$offset},{$rowsPerPage}";

 

其中连接部分可根据实际情况更改。