给你个分页类吧,感觉这个好些
专注于为中小企业提供网站建设、成都网站设计服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业复兴免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了成百上千企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
?php
class page{
//URL
protected $url;
//总条数
protected $total;
//每页显示数
protected $num;
//总页数
protected $count;
//当前页
protected $page;
//上一页数
protected $prevNum;
//下一页数
protected $nextNum;
//首页
protected $start='首页';
//上一页
protected $prev='上一页';
//下一页
protected $next='下一页';
//尾页
protected $end='尾页';
//开始记录数
protected $first;
//结束记录数
protected $last;
//初始化成员属性,传入参数url,总记录数,每页显示数
//初使化URL
//初使化总数录数
//初使化每页显示数
//得到总页数 总条数/每页显示数进一
//得到当前页 进行三元运算
//得到上一页数 当前页-1
//得到下一页数 当前页+1 得考虑到是否为首页和尾页的情况
//得到开始数 (当前页-1)*每页显示数+1
//得到结束数 比较页码算出来的结束值和总条数对比
//
public function __construct($url,$total,$num=5){
$this-url=$url;
$this-total=$total;
$this-num=$num;
$this-page=$_GET['page']?(int)$_GET['page']:1;
$this-count=$this-getCount();
$this-prevNum=$this-getPrev();
$this-nextNum=$this-getNext();
$this-first=$this-getStart();
$this-last=$this-getEnd();
}
protected function getEnd(){
return min($this-page*$this-num,$this-total);
}
protected function getStart(){
return ($this-page-1)*$this-num+1;
}
protected function getNext(){
if($this-page=$this-count){
return false;
}else{
return $this-page+1;
}
}
protected function getPrev(){
if($this-page=1){
return false;
}else{
return $this-page-1;
}
}
protected function getCount(){
return ceil($this-total/$this-num);
}
//
//
//
//
//得到偏移量 limit 5,5 0,5
public function getOffset(){
return ($this-page-1)*$this-num;
}
//
//得到分页效果
//
//search.php?keyword=abc page=1
//
//list.php?page=1
//
//
//当前页是x页 共x页 从第x条记录到第x条记录 共x条记录 首页 上一页 下一页 尾页
public function getPage(){
$string='当前是第'.$this-page.'页 共'.$this-count.'页 从第'.$this-first.'条记录到第'.$this-last.'条记录 共'.$this-total.'条记录 ';
$string.='a href="'.$this-url.'page=1"'.$this-start.'/a ';
if($this-prevNum){
$string.='a href="'.$this-url.'page='.$this-prevNum.'"'.$this-prev.'/a ';
}else{
$string.=$this-prev.' ';
}
if($this-nextNum){
$string.='a href="'.$this-url.'page='.$this-nextNum.'"'.$this-next.'/a ';
}else{
$string.=$this-next.' ';
}
$string.='a href="'.$this-url.'page='.$this-count.'"'.$this-end.'/a ';
return $string;
}
}
?
html
head
title分页显示/title
/head
script language="javascript"
function confirmDel()
{
var confirm=window.confirm("您确定要删除吗?");
if(confirm)
return true;
else
return false;
}
/script
body bgcolor="cce8cf"
center
table border="1" width="90%" cellspacing="1"
tr bgcolor="yellow"
td用户ID/td
td用户名/td
td密码/td
td性别/td
td年龄/td
td电子邮件/td
td操作/td
/tr
?php
error_reporting(0);
//设置页大小,即每页显示几条数据
$pagesize=10;
//设置第一页
$page=1;
//数据库初始化操作
$link=mysql_connect("localhost","root","root");//连接数据库
$db=mysql_select_db("HibernateDemo",$link);//选择数据库
$sql="select count(*) from userinfo";//构造sql语句
$res=mysql_query($sql);//执行查询操作,结果为总记录数
$row=mysql_fetch_array($res);//取出一条记录
$rows=$row[0];//取出总记录数
//判断一共多少页
$pages=intval($rows/$pagesize);//取整数页,总页数
if($rows%$pagesize)
$pages=$pages+1;//如果还有余数的话,那么就再加一页来显示剩余的记录
//获取用户请求,即用户提交要去哪一页
$page=$_GET["ToPage"];
//整理用户输入
if($page=0)
{
$page=1;//因为开始的时候没$page有值,所以是0,所以就让$page=1,这样后面的
//$page也就是1,见第97行
}
if($page=$pages)
{
$page=$pages;
}
session_start();
echo "div align='right' top='0'a href='logout.php'注销".$_SESSION['username']."/a/div";
echo "当前第".$page."页,每页10个记录,总".$rows."条记录,一共".$pages."页";//显示页数信息
//计算偏移量
$offset=$pagesize*($page-1);
//构造sql语句
$sqlx="select * from userinfo limit 10 offset ".$offset;
$result=mysql_query($sqlx);//执行查询操作
$ok=mysql_fetch_array($result);
while($ok)
{
?
tr
td bgcolor="#DEB887"?php echo $ok[0] ?/td
td?php echo $ok[1] ?/td
td?php echo $ok[2] ?/td
td?php echo $ok[3]==male?"男":"女" ?/td
td?php echo $ok[4] ?/td
td?php echo $ok[5] ?/td
tda href="updateInfo.php?userid=?php echo $ok[0] ?"修改/a
a href="deleteInfo.php?userid=?php echo $ok[0] ?"
onclick="return confirmDel();"删除/a
/td
/tr
?php
$ok=mysql_fetch_array($result);
}
?
/table
table
?php
//判断当前是否是第一页,不是,则显示'第一页'和'上一页'
if($page!=1)
{
?
tr
td align="center"
a href="pageSelect.php?ToPage=1"第一页/a
a href="pageSelect.php?ToPage=?php echo ($page-1) ?"上一页/a
/td
?php
}
//如果不是最后一页,则显示‘最后一页’和‘下一页’
if($page!=$pages)
{
?
td align="center" colspan="6"
a href="pageSelect.php?ToPage=?php echo ($page+1) ?"下一页/a
a href="pageSelect.php?ToPage=?php echo ($pages) ?"最后一页/a
/td
?php
}
?
table
form action="pageSelect.php" method="get" name="form1"
tr
td colspan="6" align="center"
input type="text" value="?php echo ($page) ?" name="ToPage"
size="3" /
a href="javascript:window.document.form1.submit();"GO/a
/td
/tr
/form
/table
/center
/body
/html
使用的示例代码页面上有啊:
?php
$_page = new Page($_total,$_pagesize); //其中 $_total 是数据集的总条数,$_pagesize 是每页显示的数量.
?
用的时候,先连接数据库,再 select 数据,得到数据的记录总数就是上面的 $_total。$_pagesize 是你自己定义的值,比如每页显示20条记录,就设置为20。
因为在点击分页链接时表单数据不会传递会丢失而导致分页链接无效 解决的方法有几种。 第一种是用网站管理软件把搜索结果生成静态页面并保存一段时间。 第二种是考虑用session传递搜索信息。 当搜索信息表单提交并验证之后开启session. session_start(); $_SESSION[keywords] = $X; $_SESSION[searchscope] = $Y; ... //赋值搜索信息。关键字、搜索范围等等 在搜索结果页面开启session得到搜索信息再提交就行了 session_start(); $keywords=$_SESSION[keywords]; $searchscope$_SESSION[searchscope]; 第三种是用数据库存储搜索信息。
一个分页函数,赋好值就可以使用了
/*
'PID 页面中的其它传参连接
'page 要显示的页码
'Vcount 总记录数
'Pnum 每页记录数
'className 超连接样式
*/
function ThePage($Pid,$page=1,$Vcount,$Pnum,$className){
$Pcount = ceil($Vcount/$Pnum);
if($page$Pcount) $page=$Pcount;
$StartPageNum=1;
while($StartPageNum+10=$page){
$StartPageNum=$StartPageNum+10;
}
$EndPageNum=$StartPageNum+9 ;
if($EndPageNum$Pcount) $EndPageNum=$Pcount;
$show = $show."trtd colspan='10' bgcolor='' align='right' style='padding-right:25px;padding-top:5px;' class='".$className."'";
$show = $show."共b".$Pcount."/b页 共有b".$Vcount."/b记录 第b".$page."/b页 跳到第 [ ";
if($StartPageNum1) $show = $show."a class='".$className."' href='?".$Pid."page=".($StartPageNum-1)."' title='前十页'font face='webdings'7/font/a";
for($go=$StartPageNum;$go=$EndPageNum;$go++){
if($go!=$page){
$show = $show."a class='".$className."' href='?".$Pid."page=".$go."'".$go."/a";
}else{
$show = $show."b".$go."/b";
}
$show = $show." ";
}
if($EndPageNum$Pcount) $show = $show."a class='".$className."' href='?".$Pid."page=".($EndPageNum+1)."' title='下十页'font face='webdings'8/font/a";
$show = $show."] 页";
if($page!=1) $show = $show."a class='".$className."' href='?".$Pid."page=1' 首页/a a class='".$className."' href='?".$Pid."page=".($page-1)."'上一页/a";
if($Pcount-$page!=0) $show = $show. "a class='".$className."' href='?".$Pid."page=".($page+1)."' 下一页/a a class='".$className."' href='?".$Pid."page=".$Pcount."'尾页/a";
$show=$show."/tr/td";
return $show;
}
========================附带一个使用例子=============================
?
//设置参数
$page = $_REQUEST["page"];
if($page=="") $page = 1;
$T = $_GET["T"];
if($T=="") $T = 1;
$Pid = "T=".$T."";
$wheresql = "where T = ".$T;
$recordListTable = "zc_news";
$Pnum = 10;
$classname = "lwf";
//以下不用修改
$rs = mysql_query("select count(*) from `".$recordListTable."` $wheresql ");
$Vcount = @mysql_result($rs,0);
@mysql_free_result($rs);
$start = ($page - 1) * $Pnum;
$lastNum = $Vcount - ($page - 1) * $Pnum;
$limit = $lastNum $Pnum ? $Pnum : $lastNum;
$rs = mysql_query("select * from `".$recordListTable."` $wheresql order by orderid desc,ID desc LIMIT $start,$limit");
while($ary = mysql_fetch_array($rs)){
?
tr
td标题/td
/tr
?
}
@mysql_free_result($rs);
echo ThePage($Pid,$page,$Vcount,$Pnum,$classname);
?
select * from table order by id desc
查询 所有 来自 table表 排序 按照 id 降序,desc 代表降序,asc 代表升序