php分页
<?php
//1.连接数据
include "connect.php";
/*-------------定义一个分页函数,主要用于生成分页按钮-----------------------------*/
function page($pages,$cur_page,$base_url){
/*参数说明: $pages : 总页面数
$cur_page: 当前第几页
$base_url: 当前的基本url例如 www.baidu.com/index.php?id=34&page=3
取 www.baidu.com/index.php?id=34
返回值(String类型): 一连串的页面数
*/
//1.定义首页,上一页,下一页,尾页
$first=1; //首页
$prev=$cur_page-1;
$next=$cur_page+1;
$last=$pages;
if($prev==0){ $prev=1;} //如果上一页为0则改为1
//2.组织分页按钮的html代码
//2.1显示首页跟上一页的按钮
$page_str='';
if($cur_page>1){
$page_str.="<a href='?page=$first'>首页</a> <a href='?page=$prev'>上一页</a>";
}else{
$page_str.="首页 上一页";
}
//2.2 显示数字----------12345--3456789------------------------------
$page_nums=4; //页栏显示的页面数
//找起始页
/*if(($cur_page-1)%$page_nums==0){
//a.如果当前能被整除,则直接设为起始页
$start_page=$cur_page;
}else{
//b.如果不能被整除,则用其它的方法找到起始页 8=>5 10 => 9
$start_page=floor(($cur_page-1)/$page_nums)*$page_nums+1;
}*/
$start_page=floor(($cur_page-1)/$page_nums)*$page_nums+1-2; //(公式)页栏起始显示的页数
$end_page=$start_page+$page_nums+2; //页栏最后显示的页数
for($i=$start_page;$i<=$end_page;$i++){
if($i>$pages){
//超出正常范围的页面不予显示
continue;
}
if($i<1){
$end_page++;
//超出正常范围的页面不予显示
continue;
}
//---end -------显示数字部分------------------------------
//通过循环显示所有页栏该显示的页面数
if($cur_page==$i){
//如果是当前页则不加链接
$page_str.=" $i";
}else{
$page_str.=" <a href='?page=$i'>$i</a>";
}
}
//2.3显示下一页跟尾页
if($cur_page<$pages){
$page_str.=" <a href='?page=$next'>下一页</a> <a href='?page=$last'>尾页</a>";
}else{
$page_str.=" 下一页 尾页";
}
echo $page_str; //输入分页按钮的html
}
/*-----------end--定义一个分页函数,主要用于生成分页按钮-----------------------------*/
//1.配置参数
$pagesize=2; //每页显示的条数
//2.当前页面
if(isset($_GET['page'])){
$cur_page=intval( $_GET['page']);
}else{
$cur_page=1; //默认第一页
}
//3.获取总页面数
$rs=mysql_query('SELECT count(*) as num FROM liuyan');
$row=mysql_fetch_array($rs);
$rows=$row['num']; //总行数
$pages=ceil($rows/$pagesize); //进一位取整,得到总页数
//4.查出当前页面指定的数据,limit 0,20
$offset=($cur_page-1)*$pagesize; //获取查询的起始位置
$sql="SELECT * FROM liuyan limit $offset, $pagesize";
$rs=mysql_query($sql);
$i=1*$offset;
while($row=mysql_fetch_array($rs)){
echo '第'.$i.'条:';
echo 'ID:'.$row['id'];
echo '<br/>';
echo '内容:'.$row['content'];
echo '<br/>';
echo '------------------------------------------------------------------';
echo '<br/>';
echo '<br/>';
$i++;
}
//5.输出分页按钮
page($pages,$cur_page,$base_url='');
$str=" 当前第 $cur_page 页 共 $rows 条记录 共 $pages 页";
echo $str;
?>
尾页显示还有些问题只能显示3页,希望大虾们给点意见