Board logo

标题: 十天学会php之第八天 [打印本页]

作者: admin    时间: 2008-3-26 16:40     标题: 十天学会php之第八天


' ?. \6 Y3 Q7 F0 e# Y' n- T2 b学习目的:做一个分页显示
2 B  Q5 E7 S6 z  |3 v关键就是用到了SQL语句中的limit来限定显示的记录从几到几。我们需要一个记录当前页的变量$page,还需要总共的记录数$num" ~5 f0 I# A+ U6 Q; x
% s8 l. e& l1 y& H0 T: D( F# m
对于$page如果没有我们就让它=0,如果有<0就让它也=0,如果超过了总的页数就让他=总的页数。
/ u% j+ K: }% }

5 i4 H7 [% e8 g" e3 a$execc="select count(*) from tablename ";
: T6 e$ S! p3 T* t, c/ s1 X! m$resultc=mysql_query($execc);
1 }2 x# V0 u5 d* C$rsc=mysql_fetch_array($resultc);" F/ e( u( `" y) n
$num=$rsc[0];
* I$ u: i. ?4 t' c
: X9 Q, i0 j1 Q& q# N/ N4 d& S: X$ n
这样可以得到记录总数
$ t4 c4 ~' M4 }- ^( `ceil($num/10))如果一页10记录的话,这个就是总的页数9 x, m+ R* V0 K& x1 J/ k
所以可以这么写
( \+ G8 f" R8 Q% H4 G% E( A% S! F  eif(empty($_GET['page']))
6 ^5 R4 W6 [9 g# Q$ I9 V{# }) Y9 c# K4 ?2 X, i
$page=0;0 b5 S9 l* r, C. s& b& B
}* ^/ z1 M- a7 t( }; i
else  _; P# N/ O6 r! q/ q4 F7 d
{
0 Q2 z1 u/ y% D. t; ]+ j$page=$_GET['page'];1 s1 ~5 V, h7 D% J4 B
if($page<0)$page=0;
& i, R$ Y8 y7 \5 H* a1 q9 qif($page>=ceil($num/10))$page=ceil($num/10)-1;//
因为page是从0开始的,所以要-1
" {9 k- g  ?. x8 @}
8 `- O) Q5 r) w  q( c( v" _* M$ E# ?# F; N
这样$exec可以这么写
$exec="select * from tablename limit ".($page*10).",10";
2 u5 E9 Q# v+ ]0 ?8 {//一页是10记录的

0 |- c/ ]2 r* u0 ^最后我们需要做的就是几个连接:
7 C+ e7 ], o7 M% K* ]1 _& u) R<a href="xxx.php?page=0">FirstPage</a> $ J" \  K+ {8 V3 }9 F. p0 d
<a href="xxx.php?page=<?=($page-1)?>">PrevPage</a>
' j$ f' x7 z5 }9 U* }' ~<a href="xxx.php?page=<?=($page 1)?>">NextPage</a> . D7 X( T( r% ~. A: V1 ^& ]3 x
<a href="xxx.php?page=<?=ceil($num/10)-1?>">LastPage</a>
2 i3 |) ^2 F. s5 Q1 w
3 [0 j/ `5 m6 Z* i4 I4 |7 N
这是一个大致的思路,大家可以想想怎么来优化?十天学会php之第八天就说到这里,第九天说一下一些注意的问题。




欢迎光临 捌玖网络工作室 (http://www.89w.org/) Powered by Discuz! 7.2