Board logo

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

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

8 t6 ~+ X, L/ ^
学习目的:做一个分页显示, ]& I% u4 _8 f1 O+ x
关键就是用到了SQL语句中的limit来限定显示的记录从几到几。我们需要一个记录当前页的变量$page,还需要总共的记录数$num- D. L0 q- p. Q) n, O4 `$ r

9 I4 d' g6 f! y9 q6 O6 c对于$page如果没有我们就让它=0,如果有<0就让它也=0,如果超过了总的页数就让他=总的页数。
& `' K; W+ q. ]$ k* x) g
6 ^8 T* ~# I5 Y; Y+ b
$execc="select count(*) from tablename ";$ H8 Y" O5 S/ s# o) O( @8 ]
$resultc=mysql_query($execc);
6 ?; ]7 W& _" a, y; l/ E' }$rsc=mysql_fetch_array($resultc);1 V! [  b% b/ A! U& `! X( }
$num=$rsc[0];% s' _9 F1 `' R$ k# r2 K) \

4 c6 l8 a: f' F; p7 \8 @
这样可以得到记录总数
9 w$ N. m3 f4 \! V- E+ u1 y  L* _ceil($num/10))如果一页10记录的话,这个就是总的页数; M- c; _  Y) F5 j) J9 G
所以可以这么写
1 o' u$ D" g7 D. Dif(empty($_GET['page']))
& \+ z( v/ l2 V+ }9 _2 T/ p{9 ?' y- }! Q! |! j
$page=0;
3 T9 h- k2 E" A: W# i( w}
3 g* K( n0 h; n6 e1 selse
+ P1 C9 S0 c$ a; F{
- d  G) h6 A  s$ E& y% I+ k$ E$page=$_GET['page'];
3 F% O" d" v; W5 b6 J' xif($page<0)$page=0;: O. }- H# p1 s& \; G& Z; S1 i+ r
if($page>=ceil($num/10))$page=ceil($num/10)-1;//
因为page是从0开始的,所以要-1
1 o! ]4 Y" Y4 ?) Z& K6 v} % J" k3 j( W. |( t. {8 h

$ m3 h2 j& b' C, h. Z这样$exec可以这么写
$exec="select * from tablename limit ".($page*10).",10";
  I* |8 a0 T+ v9 X0 z6 k//一页是10记录的

4 e+ G1 I' B  G最后我们需要做的就是几个连接:
& b  s% M8 O. H4 _  Y2 Y<a href="xxx.php?page=0">FirstPage</a> 3 _7 M' u/ o3 u* C2 B
<a href="xxx.php?page=<?=($page-1)?>">PrevPage</a>
8 x- o+ B2 i: f) h8 Z+ S0 {<a href="xxx.php?page=<?=($page 1)?>">NextPage</a>
9 ~- t4 B& Z6 g" Z9 `( C1 \2 C8 }<a href="xxx.php?page=<?=ceil($num/10)-1?>">LastPage</a>
# q7 A6 Q2 f0 R$ S' c, ~/ _% P) a+ }( p
这是一个大致的思路,大家可以想想怎么来优化?十天学会php之第八天就说到这里,第九天说一下一些注意的问题。




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