标题:
十天学会php之第八天
[打印本页]
作者:
admin
时间:
2008-3-26 16:40
标题:
十天学会php之第八天
* _& O' U3 R' i9 |- e
学习目的:做一个分页显示
+ P* R) s3 @/ l7 B0 e. e4 I
关键就是用到了
SQL
语句中的
limit
来限定显示的记录从几到几。我们需要一个记录当前页的变量
$page
,还需要总共的记录数
$num
8 Z1 k# Z7 S" ^+ A
/ A. u9 {8 _ I
对于
$page
如果没有我们就让它
=0
,如果有
<0
就让它也
=0
,如果超过了总的页数就让他
=
总的页数。
: J1 R! _3 g6 @9 h* s- F/ O
7 |( x u o# g6 G
$execc="select count(*) from tablename ";
7 Y1 {. n" G* }* D5 ?! P
$resultc=mysql_query($execc);
1 f( b: C6 Z% P. z
$rsc=mysql_fetch_array($resultc);
/ s5 E" [ l) J/ }$ b+ R
$num=$rsc[0];
/ z# ? @4 ], L3 x
6 C. s3 D2 N- I- e# Z
这样可以得到记录总数
; D8 ]5 b1 Y4 S1 X* [, `( j* {
ceil($num/10))
如果一页
10
记录的话,这个就是总的页数
7 R0 }4 s' c& ^/ z( Q- i
所以可以这么写
# ` v8 L2 I6 L
if(empty($_GET['page']))
4 s" g( u: l1 p# q
{
2 D! C0 d+ C5 s% K, c1 x' H. x
$page=0;
6 X! n3 m+ i. W8 ~
}
. [0 Z+ `5 l0 @/ M
else
6 _' m9 e3 }3 h" w3 F
{
S6 V0 x; a5 I( R# t+ U
$page=$_GET['page'];
0 J+ I4 ]7 _3 @, }" V
if($page<0)$page=0;
+ {2 j8 j" L$ Y y8 U! z# d
if($page>=ceil($num/10))$page=ceil($num/10)-1;//
因为
page
是从
0
开始的,所以要
-1
: o+ h* N1 L/ z& ^
}
1 G' H7 {' z4 @
5 t3 N- Q+ y7 M& }8 x
这样
$exec
可以这么写
$exec="select * from tablename limit ".($page*10).",10";
+ J& D6 x! h7 J$ T( S) d3 }' O
//
一页是
10
记录的
& _$ m' k1 t) c7 ~% w
最后我们需要做的就是几个连接:
: z0 e: D' C* r$ {' F# B; _3 d! Q
<a href="xxx.php?page=0">FirstPage</a>
, o# h1 u( f. y- |4 S- j4 |' a* w
<a href="xxx.php?page=<?=($page-1)?>">PrevPage</a>
9 x8 X5 F' [# m! @+ g* U0 F2 ]( K9 A' f
<a href="xxx.php?page=<?=($page 1)?>">NextPage</a>
6 O, b/ e# C' k( v/ R) o5 j* h2 Y; E
<a href="xxx.php?page=<?=ceil($num/10)-1?>">LastPage</a>
( J" Z- X. J4 g! D, ?$ Q) L" s
Z3 V; }7 u1 U1 [$ Z6 u
这是一个大致的思路,大家可以想想怎么来优化?十天学会
php
之第八天就说到这里,第九天说一下一些注意的问题。
欢迎光临 捌玖网络工作室 (http://89w.org/)
Powered by Discuz! 7.2