昨天在里,和看到几位牛牛讨论关于PHP分页的算法,受益颇深,特将代码收藏,待以后使用。。
/*
大概的要求就是
*提供总页数,提供当前浏览页数,提供显示页数
*浏览页数尽量在中间
*比如总页数是100页,正在浏览第34页,要求显示7页
*哪么返回结果应该是31323334353637
*/

//
///萝莉控的/
function
z(
$m
,
$x
,
$len
)
//
M是总共多少页,X是位于中间的页,LEN是每次显示多少翻页
{
//
10,5,5
$start
=
$x
-
(
$len
-
1
)
/
2
;
if
(
$start
<
1
)
{
$start
=
1
;
$end
=
$len
;
if
(
$end
>
$m
)
$end
=
$m
;
}
else
{
$end
=
$start
+
$len
-
1
;
if
(
$end
>
$m
)
{
$offset
=
$end
-
$m
;
$end
=
$m
;
$start
-=
$offset
;
if
(
$start
<
1
)
$start
=
1
;
}
}
for
(
$c
=
$start
;
$c
<=
$end
;
$c
++
)
$str
[]
=
(int)
$c
;
return
$str
;
}
var_dump
(z(
100
,
45
,
10
));

//
废墟的方法///
function
fucklolicon(
$x
,
$m
,
$len
)
{
$ss
=
intval
(
$len
/
2
);
$start
=
$x
-
$ss
;
$end
=
$x
+
$ss
;
if
(
$start
<
1
)
{
$off
=
$start
-
1
;
$start
=
1
;
$end
-=
$off
;
}
if
(
$end
>
$m
)
$end
=
$m
;
if
(
$end
>
$m
-
$ss
)
{
if
(
$end
-
$m
<
1
)
$start
=
1
;
else
$start
=
$end
-
$m
;
}
for
(
$i
=
$start
;
$i
<
$end
+
1
;
$i
++
)
{
$p
[]
=
$i
;
}
return
$p
;
}
再来个全的。。废墟兄给的分页类。。。
/*
分页
*/
function
PageQuery(
$table
,
$condition
,
$page
=
1
,
$url
=
""
,
$PageList
=
10
,
$PageNum
=
7
,
$space
=
"
"
)
{
/*
查询总的记录数
*/
if
(
$condition
==
""
)
$condition
=
1
;
$aNum
=
$this
->
GetRows(
$table
,
$condition
);
if
(
$aNum
==
0
){
return
$p
;
}
/*
总页数计算
*/
if
(
$aNum
%
$PageList
==
0
){
$aPage
=
$aNum
/
$PageList
;
}
else
{
$aPage
=
intval
(
$aNum
/
$PageList
)
+
1
;
}
/*
分页内容
*/
if
(
$page
>
intval
(
$PageNum
/
2
)
+
1
){
$p
[]
=
"
<ahref="$_SERVER[PHP_SELF]?page=1&$url">|<<</a>
"
;
}
if
(
$page
!=
1
){
$page_prev
=
$page
-
1
;
$p
[]
=
"
<ahref="$_SERVER[PHP_SELF]?page=$page_prev&$url"><<</a>
"
;
}
$page_start
=
$page
-
intval
(
$PageNum
/
2
);
$page_end
=
$page
+
intval
(
$PageNum
/
2
);
if
(
$page_start
<
1
){
$off
=
$page_start
-
1
;
$page_start
=
1
;
$page_end
-=
$off
;
}
if
(
$page_end
>
$aPage
){
$page_end
=
$aPage
;
}
if
(
$page_end
>
$aPage
-
intval
(
$PageNum
/
2
)){
if
(
$page_end
-
$PageNum
<
1
){
$page_start
=
1
;
}
else
{
$page_start
=
$page_end
-
$PageNum
;}
}
for
(
$i
=
$page_start
;
$i
<
$page_end
+
1
;
$i
++
){
if
(
$page
==
$i
){
$p
[]
=
"
<fontcolor="#6600FF">$i</font>
"
;
}
else
{
$p
[]
=
"
<ahref="$_SERVER[PHP_SELF]?page=$i&$url">$i</a>
"
;
}
}
if
(
$page
<
$aPage
){
$page_next
=
$page
+
1
;
$p
[]
=
"
<ahref="$_SERVER[PHP_SELF]?page=$page_next&$url">>></a>
"
;
}
if
(
$page
<
$aPage
-
intval
(
$PageNum
/
2
)){
$p
[]
=
"
<ahref="$_SERVER[PHP_SELF]?page=$aPage&$url">>>|</a>
"
;
}
$p
[]
=
"
总共$aPage页$aNum条
"
;
return
implode
(
$space
,
$p
);
}