Board logo

标题: 十天学会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
else6 _' m9 e3 }3 h" w3 F
{  S6 V0 x; a5 I( R# t+ U
$page=$_GET['page'];
0 J+ I4 ]7 _3 @, }" Vif($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