为了方便,我把分页类的完整代码贴出了,另外再贴个测试的代码。
分页类代码:
1

2
<!-- 3
类名:php通用分页类4
版本:2.05
功能:实现php中常用的页面分页,提供图像文字分页链接、图像分页链接。文字链接时,可自定义链接文字,图像链接时,可自定义图片。并且两种方式都可自定义样式。6
作者:KnowMore7
邮箱:hkmgjsf@yahoo.com.cn8
电话:159765265259
时间:2007.5.1010
附注:如发现Bug,麻烦告知一声,以便能及时纠正,谢谢!可自由转载,但请注明作者、出处。11
-->12

13
<?14
class page15
{16
var $all_count,$cur_page,$sql,$conn,$page_size,$all_page,$cur_url,$page_num;17
18
function page($conn)//构造函数19
{20
$this->conn =$conn;//数据库连接21
} 22
23
function init()//初始化函数24
{25
$this->get_count();//获取总纪录数26
$this->get_curpage();//获取当前页数27
$this->get_allpage();//总页数28
$this->cur_url=$_SERVER['PHP_SELF'];//当前页面url 29
} 30
31
function open()//获取记录集32
{33
$this->init();//初始化34
if($this->conn)35
{36
$sql=$this->sql." limit ".$this->page_size * $this->cur_page." ,".$this->page_size;37
$rs=mysql_query($sql,$this->conn);38
return $rs;39
}40
else41
return false;42
}43
44
function get_count()//获取总纪录数45
{46
if(isset($_GET['all_count']))47
$this->all_count=$_GET['all_count'];48
else49
{ 50
$rs=mysql_query($this->sql,$this->conn);51
$this->all_count=mysql_num_rows($rs);52
}53
}54
55
function get_curpage()//获取当前页数56
{57
if(isset($_GET['cur_page']))58
$this->cur_page=intval($_GET['cur_page'])+0;59
else60
$this->cur_page=0;61
}62
63
function get_allpage()//获取总页数64
{65
if($this->all_count % $this->page_size)66
$this->all_page=intval($this->all_count / $this->page_size);67
else68
{69
if($this->all_count==0)70
$this->all_page=intval($this->all_count / $this->page_size);71
else72
$this->all_page=intval($this->all_count / $this->page_size)-1;73
}74
}75
76
//文字分页链接77
78
function first_page($name="首页",$str="",$class_name="")//首页。$name为首页名称,$str为自定义传递字符串,$class_name为CSS类选择标签名(注,以下同)79
{80
if($this->cur_page >0)//当前页大于第一页81
printf("<a href='%s?cur_page=%d&all_count=%d&$str' class='$class_name'>$name</a>",$this->cur_url,0,$this->all_count);82
}83
84
function back_page($name="上一页",$str="",$class_name="")//上一页 85
{86
if( $this->cur_page > 0)//当前页不是第一页87
printf("<a href='%s?cur_page=%d&all_count=%d&$str' class='$class_name'>$name</a>",$this->cur_url,$this->cur_page-1,$this->all_count);88
}89
90
function next_page($name="下一页",$str="",$class_name="")//下一页 91
{92
if($this->cur_page<$this->all_page)//当前页小于总页数93
printf("<a href='%s?cur_page=%d&all_count=%d&$str' class='$class_name'>$name</a>",$this->cur_url,$this->cur_page+1,$this->all_count);94
}95
96
function last_page($name="尾页",$str="",$class_name="")//尾页 97
{98
if( $this->cur_page < $this->all_page)//当前页不是最后一页99
printf("<a href='%s?cur_page=%d&all_count=%d&$str' class='$class_name'>$name</a>",$this->cur_url,$this->all_page,$this->all_count);100
}101
102
//文字分页链接 103

104

105

106
//图像分页链接107

108
function first_page_img($url="",$str="",$class_name="")//首页。$url为图片地址,$str为自定义传递字符串,$class_name为CSS类选择标签名(注,以下同)109
{110
if($this->cur_page >0)//当前页大于第一页111
printf("<a href='%s?cur_page=%d&all_count=%d&$str' class='$class_name'><img src='$url' border='0'/></a>",$this->cur_url,0,$this->all_count);112
}113
114
function back_page_img($url="",$str="",$class_name="")//上一页 115
{116
if( $this->cur_page > 0)//当前页不是第一页117
printf("<a href='%s?cur_page=%d&all_count=%d&$str' class='$class_name'><img src='$url' border='0' /></a>",$this->cur_url,$this->cur_page-1,$this->all_count);118
}119
120
function next_page_img($url="",$str="",$class_name="")//下一页 121
{122
if($this->cur_page<$this->all_page)//当前页小于总页数123
printf("<a href='%s?cur_page=%d&all_count=%d&$str' class='$class_name'><img src='$url' border='0' /></a>",$this->cur_url,$this->cur_page+1,$this->all_count);124
}125
126
function last_page_img($url="",$str="",$class_name="")//尾页 127
{128
if( $this->cur_page < $this->all_page)//当前页不是最后一页129
printf("<a href='%s?cur_page=%d&all_count=%d&$str' class='$class_name'><img src='$url' border='0' /></a>",$this->cur_url,$this->all_page,$this->all_count);130
}131
132
//图像分页链接 133

134
//页码135
function list_page($f_num=4,$l_num=3,$tran_str="…",$str="",$class_name="")//列出页码。如"[1] [2] [3]……[6][7]"。$f_num为省略号前显示的页码数,$l_num反之。如果两参数相回结果大于总页数,则显示全部页码。136
{137
$content="";138
if( ($f_num+$l_num) > $this->all_page )139
for($i=0;$i<=$this->all_page;$i++)140
$content.=" <a href='".$this->cur_url."?cur_page=".$i."&all_count=".$this->all_count."&$str' class='$class_name'>"."[".($i+1)."]</a> ";141
else142
{143
for($i=0;$i<$this->all_page && $i<$f_num;$i++)144
$content.=" <a href='".$this->cur_url."?cur_page=".$i."&all_count=".$this->all_count."&$str' class='$class_name'>"."[".($i+1)."]</a>";145
146
$content.=$tran_str;147
148
for($i=($this->all_page-$l_num)+1;$i<=$this->all_page;$i++)149
$content.="<a href='".$this->cur_url."?cur_page=".$i."&all_count=".$this->all_count."&$str' class='$class_name'>"."[".($i+1)."]</a>";150
151
}152
echo $content;153
}154
//页码155
}156
?>157

下面是测试代码(注,图片形式的上下翻页我已经测试过了,但上次给我删除掉了,有兴趣的可以看注释,里面写的很明白的了。):
1
<?2
$conn=mysql_connect("localhost","root","")or die("数据库连接失败,请联系管理员!");3
mysql_select_db("test",$conn); 4
?>5
<? require("page_class.php"); //类文件?>6
<?7
$obj=new page($conn);8
$obj->sql="select * from news";9
$obj->page_size=2;10
$rs=$obj->open();11
if(false==$rs)12
die("获取记录集失败,请检查数据库连接是否成功!");13
else14
{15
while($rows_rs=mysql_fetch_array($rs))16
echo "记录输出:".$rows_rs[0]."<br/>";17
}18
echo "cur_page :".($obj->cur_page+1)."<br/>";19
echo "page_size :".$obj->page_size."<br/>";20
echo "all_count :".$obj->all_count."<br/>";21
echo "all_page :".($obj->all_page+1)."<br/>";22
$obj->first_page(); 23
$obj->back_page(); 24
$obj->next_page(); 25
$obj->last_page(); 26
$obj->list_page(2,2,"<<…>>");27
?>
有什么疑问或意见的,请联系我,谢谢。
来源:https://www.cnblogs.com/knowmore/archive/2007/05/17/750714.html