php分页函数
2018-09-07 14:36
  <?php 
/* 
需求,建立一个test数据库,在里边建一个test表,里面就 
只要id字段,输入一下数据就可以啦。。 
由于水平有限,难免出错。。 
*/ 
$conn=mysql_connect(localhost,root,); 
$maxnum=2;//每页显示记录条数 
mysql_select_db(test,$conn); 
$query1=SELECTCOUNT(*)AStotalrowsFROMtest; 
$result1=mysql_query($query1,$conn)ordie(mysql_error()); 
$row1=mysql_fetch_assoc($result1); 
$totalRows1=$row1[totalrows];//数据集数据总条数 
$totalpages=ceil($totalRows1/$maxnum);//计算可分页总数,ceil()为上舍函数 
if(!isset($_GET[page])!intval($_GET[page])$_GET[page]>$totalpages)$page=1;//对3种出错进行默认处理 
//在url参数page不存在时,page不为10进制数时,page大于可分页数时,默认为1 
else$page=$_GET[page]; 
$startnum=($page-1)*$maxnum;//从数据集第$startnum条开始取,注意数据集是从0开始的 
$query=SELECT*FROMtestLIMIT$startnum,$maxnum;//选择出符合要求的数据从$startnum条数据开始,选出$maxnum行 
$result=mysql_query($query,$conn)ordie(mysql_error()); 
$row=mysql_fetch_assoc($result); 
?> 
<html> 
<head> 
<metahttp-equiv=Content-Typecontent=text/html;charset=gb2312> 
<title>分页示例</title> 
<scriptlanguage=JavaScripttype=text/JavaScript> 
<!-- 
functionMM_jumpMenu(targ,selObj,restore){//v3.0 
eval(targ+.location=+selObj.options[selObj.selectedIndex].value+); 
if(restore)selObj.selectedIndex=0; 
} 
//--> 
</script> 
<styletype=text/css> 
a{text-decoration:none;} 
a:hover{text-decoration:underline} 
table{font-size:12px;} 
.tb{background-color:#73BB95} 
.tr{background-color:#FFFFFF} 
</style> 
</head> 
<body> 
<tablewidth=30%border=0align=centercellpadding=0cellspacing=1class=tb> 
<tr> 
<tdheight=24><divalign=left>分页示例</div></td> 
</tr> 
<?phpif($totalRows1){//记录集不为空显示 
do{ 
?> 
<trclass=tr> 
<tdheight=24><divalign=center><?phpecho$row[id];?></div></td> 
</tr> 
<?php}while($row=mysql_fetch_assoc($result));?> 
</table> 
<tablewidth=95%border=0align=centercellpadding=0cellspacing=0> 
<tr><formname=form1> 
<tdheight=27><divalign=center> 
<?php 
echo共计<fontcolor=\#ff0000\>$totalRows1</font>条记录; 
echo<fontcolor=\#ff0000\>.$page.</font>./.$totalpages.页; 
//实现<<<12345>>>分页链接 
$pre=$page-1;//上一页 
$next=$page+1;//下一页 
$maxpages=4;//处理分页时<<<1234>>>显示4页 
$pagepre=1;//如果当前页面是4,还要显示前$pagepre页,如<<<3/4/56>>>把第3页显示出来 
if($page!=1){echo<ahref=.$_SERVER[PHP_SELF].><<</a>; 
echo<ahref=.$_SERVER[PHP_SELF].?page=.$pre.><</a>;} 
if($maxpages>=$totalpages)//如果总记录不足以显示4页 
{$pgstart=1;$pgend=$totalpages;}//就不所以的页面打印处理 
elseif(($page-$pagepre-1+$maxpages)>$totalpages)//就好像总页数是6,当前是5,则要把之前的34显示出来,而不仅仅是4 
{$pgstart=$totalpages-$maxpages+1;$pgend=$totalpages;} 
else{ 
$pgstart=(($page<=$pagepre)?1:($page-$pagepre));//当前页面是1时,只会是1234>>>而不会是0123>>> 
$pgend=(($pgstart==1)?$maxpages:($pgstart+$maxpages-1)); 
} 
for($pg=$pgstart;$pg<=$pgend;$pg++){//跳转菜单 
if($pg==$page)echo<ahref=\.$_SERVER[PHP_SELF].?page=$pg\><fontcolor=\#ff0000\>$pg</font></a>; 
elseecho<ahref=\.$_SERVER[PHP_SELF].?page=$pg\>$pg</a>; 
} 
if($page!=$totalpages) 
{echo<ahref=.$_SERVER[PHP_SELF].?page=.$next.>></a>; 
echo<ahref=.$_SERVER[PHP_SELF].?page=.$totalpages.>>></a>;} 
?> 
<selectname=menu1onChange=MM_jumpMenu(parent,this,0)> 
<optionvalue=>选择</option> 
<?phpfor($pg1=1;$pg1<=$totalpages;$pg1++){ 
echo<optionvalue=\.$_SERVER[PHP_SELF].?page=$pg1\>.$pg1.</option>; 
}?> 
</select> 
</td></form> 
</tr> 
</table> 
<?php}else{//记录集为空时显示?> 
<trclass=tr> 
<tdheight=24><divalign=center>没有任何记录</div></td> 
</tr> 
</table> 
<?php}?> 
</body> 
</html> 
<?php 
mysql_free_result($result1); 
mysql_free_result($result); 
?>