Board logo

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

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


$ B9 u4 T) r/ k学习目的:做一个分页显示( T1 N7 d# M9 ?' K+ j0 I  s5 y/ ~6 K
关键就是用到了SQL语句中的limit来限定显示的记录从几到几。我们需要一个记录当前页的变量$page,还需要总共的记录数$num
* t6 p5 N* ^- k1 s/ b" p; l4 f# Y9 s' o8 ~
对于$page如果没有我们就让它=0,如果有<0就让它也=0,如果超过了总的页数就让他=总的页数。
/ ?0 ~+ A# I4 f- W0 f

$ a$ w% Z, Y, ~: C% ]( n5 Z$execc="select count(*) from tablename ";% e: R7 {; x2 h4 k
$resultc=mysql_query($execc);  I) g3 A7 V7 L3 J3 {$ W# f
$rsc=mysql_fetch_array($resultc);- U% C, \# O( i# F1 J6 X( m
$num=$rsc[0];
- I& r& M* G" e8 ]+ e- k
5 K( X7 X. f; w
这样可以得到记录总数+ V/ W" Q" }% c
ceil($num/10))如果一页10记录的话,这个就是总的页数  o" `1 b0 F$ X2 X
所以可以这么写: }, B7 Q* N/ p; u# ?* q* L6 i* z1 A
if(empty($_GET['page']))
7 c' s- s, R5 H) a2 G{
5 U8 ^4 f* Z( @+ i# }$page=0;: P& w7 u% p; `
}
/ ?1 U% Q& D( g/ u% kelse* B+ ~& t0 D% Y6 L( p4 @
{
5 }+ L- l! ^9 T* z$page=$_GET['page'];
' s4 P2 h2 t, H( v5 m3 W: W- oif($page<0)$page=0;
  q# c% |8 e5 }- i' U8 A+ Cif($page>=ceil($num/10))$page=ceil($num/10)-1;//
因为page是从0开始的,所以要-1  i1 ~$ w6 |4 m& F- R/ b7 p# @  M
} 2 z& l' f& j! C% v" K0 f

- M6 Z; M' v8 Y) W! ^) P. t这样$exec可以这么写
$exec="select * from tablename limit ".($page*10).",10";
1 ~" Q, J7 G) l% y//一页是10记录的
8 x- l4 E3 u9 e* _& a0 Q" R+ B
最后我们需要做的就是几个连接:! x% Q) i/ q; G/ `
<a href="xxx.php?page=0">FirstPage</a> 1 e% v. }1 h/ ^
<a href="xxx.php?page=<?=($page-1)?>">PrevPage</a>
+ }$ L& o+ b# s) y+ d<a href="xxx.php?page=<?=($page 1)?>">NextPage</a>
, f4 N7 A* h. E. J# V; E/ F<a href="xxx.php?page=<?=ceil($num/10)-1?>">LastPage</a>, C. d: V* N; _- h; k# V

6 S  u; ^& y" p& Q
这是一个大致的思路,大家可以想想怎么来优化?十天学会php之第八天就说到这里,第九天说一下一些注意的问题。




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