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


1
2
<!--
3
类名:php通用分页类
4
版本:2.0
5
功能:实现php中常用的页面分页,提供图像文字分页链接、图像分页链接。文字链接时,可自定义链接文字,图像链接时,可自定义图片。并且两种方式都可自定义样式。
6
作者:KnowMore
7
邮箱:hkmgjsf@yahoo.com.cn
8
电话:15976526525
9
时间:2007.5.10
10
附注:如发现Bug,麻烦告知一声,以便能及时纠正,谢谢!可自由转载,但请注明作者、出处。
11
-->
12
13
<?
14
class page
15
{
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
else
41
return false;
42
}
43
44
function get_count()//获取总纪录数
45
{
46
if(isset($_GET['all_count']))
47
$this->all_count=$_GET['all_count'];
48
else
49
{
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
else
60
$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
else
68
{
69
if($this->all_count==0)
70
$this->all_page=intval($this->all_count / $this->page_size);
71
else
72
$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
else
142
{
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
else
14
{
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
?>
有什么疑问或意见的,请联系我,谢谢。