博客列表 >php+mysql分页原理实现

php+mysql分页原理实现

蓝谑的博客
蓝谑的博客原创
2018年02月21日 18:25:54797浏览
  • 第一步:传入页码

$page=isset($_GET['p'])?trim($_GET['p']):1;
  • 第二步:链接数据库

  • 第三步:取出数据

$sql="select * from my_page limit ".($page-1)*$pagesize .",{$pagesize}";	
$result=mysqli_query($conn, $sql);
while($row=mysqli_fetch_assoc($result)){
		echo "<tr>";
		echo "<td>{$row['id']}</td>";
		echo "<td>{$row['name']}</td>";
		echo "</tr>";
	}
  • 第四步:获取记录总数和总共的页码数

//获取数据总数
$total_sql="select count(*) from my_page";
$total_result=mysqli_query($conn, $total_sql);
$total_info=mysqli_fetch_array($total_result); //对结果进行处理
$total=$total_info[0];
echo '总条数为:'.$total."<br>";
//计算页数
$total_page=ceil($total/$pagesize);//总页数
  • 第五步:显示数据+分页条+分页条的省略号编写(最重要的是偏移量的计算及同显示页码之间的逻辑关系)

//计算偏移量
	$pageoffset=($showpage-1)/2;
	if($page>1){
		$page_banner.="<a href='".$_SERVER['PHP_SELF']."?p=1"."'>首页</a>";
		$page_banner.="<a href='".$_SERVER['PHP_SELF']."?p=".($page-1)."'><上一页</a>";
	}else{
		$page_banner.="<span class='disable'>首页</span>";
		$page_banner.="<span class='disable'><上一页</span>";
	}
	//初始化数据(即用来表示从哪个页码开始显示,到哪个页码显示结束)
	$start=1;
	$end=$total_page;
	if($total_page>$showpage){ //总页码数大于了我们想要显示的页码数
		if($page>$pageoffset+1){//并且当前页码大于了偏移量加一
			$page_banner.="...";
		}
		if($page>$pageoffset){//当前页码大于偏移量
			//例如当前页是5是,起始位置就要为(5-2)
			$start=$page-$pageoffset;
			$end=$total_page>$page+$pageoffset?$page+$pageoffset:$total_page;
		}else{ //当前页码小于等于偏移量
			$start=1;
			$end=$total_page>$showpage?$showpage:$total_page;
		}
		
		if($page+$pageoffset>$total_page){
			$start=$start-($page+$pageoffset-$end);
		}
	}
	
	//显示数据      
	for($i=$start;$i<=$end;$i++){
		if($page==$i){
			$page_banner.="<span class='current'>{$i}</span>";
		}else{
			$page_banner.="<a href='".$_SERVER['PHP_SELF']."?p=".($i)."'>{$i}</a>";
		}
	}
	
	if($total_page>$showpage&&$total_page>$page+$pageoffset){
		$page_banner.="....";
	}
	if($page<$total_page){
		$page_banner.="<a href='".$_SERVER['PHP_SELF']."?p=".($page+1)."'>下一页></a>";
		$page_banner.="<a href='".$_SERVER['PHP_SELF']."?p=".($total_page)."'>尾页</a>";
	}else{
		$page_banner.="<span class='disable'>下一页></span>";
		$page_banner.="<span class='disable'>尾页</span>"; 
	}
	$page_banner.="<br>"."共{$total_page}页<br>";
  • 第六步:跳转功能的实现

$page_banner.="<form action='my_page.php' method='get'>";
$page_banner.="到第<input type='text' size='2' name='p'>";
$page_banner.="<input type='submit' value='确定'>";
$page_banner.="</form>";


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议