Board logo

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

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


3 v3 y2 |( p, w* J  _学习目的:做一个分页显示4 P: @1 B* |' T, V" d: Y
关键就是用到了SQL语句中的limit来限定显示的记录从几到几。我们需要一个记录当前页的变量$page,还需要总共的记录数$num
0 L- n4 P; ~1 W4 t7 {5 p- c1 {  r+ ]" u  G8 H& Z8 |0 e
对于$page如果没有我们就让它=0,如果有<0就让它也=0,如果超过了总的页数就让他=总的页数。
0 Z+ Q+ }# D) |6 _7 s& Y

  y$ q1 s1 u7 ]* C$ v- G: A$execc="select count(*) from tablename ";
7 f0 w" R0 \3 \) c1 b$resultc=mysql_query($execc);
+ q3 I. r/ T+ _% N" ~- x) l$rsc=mysql_fetch_array($resultc);
' a& A: g; D6 Z+ s) q# I$num=$rsc[0];) F" z( |. t0 Q* A5 s3 w4 `
1 f- s! s, k( c! b* q' k
这样可以得到记录总数0 i5 X' U2 w3 d9 y6 [; J
ceil($num/10))如果一页10记录的话,这个就是总的页数
1 w' C0 J8 c: k& W8 k1 w所以可以这么写. T" S7 O$ n0 J2 ~" @0 k
if(empty($_GET['page']))* V5 U: b! F0 m+ J* k
{& E7 m6 k6 [: d! q
$page=0;
( i( O3 `+ l# h: j7 P4 y, t( _}- Y7 m( ~3 `) w' p' q# `
else0 Q6 }" ?# W+ Z6 k7 Z: n0 F
{: w+ }4 W! G! j8 Y
$page=$_GET['page'];- z) r2 d% @: X4 k5 l
if($page<0)$page=0;
6 o4 R) n% S3 P" Z% Sif($page>=ceil($num/10))$page=ceil($num/10)-1;//
因为page是从0开始的,所以要-1# |  V- w8 q7 O& Q7 V
} : Y* O, T) I" }, n

, D$ R7 H, Z6 a- ]: j0 N这样$exec可以这么写
$exec="select * from tablename limit ".($page*10).",10";
7 u. C2 a( c: E# x6 C//一页是10记录的

  H' [1 g$ A9 b最后我们需要做的就是几个连接:
0 K1 J1 L7 ~. D8 Y' K6 M<a href="xxx.php?page=0">FirstPage</a>
# v! I  Y# g7 V# }<a href="xxx.php?page=<?=($page-1)?>">PrevPage</a>
+ M% R' h: O: q% Y& h! ?<a href="xxx.php?page=<?=($page 1)?>">NextPage</a>
8 C1 H; X+ |, |3 j6 R% @# Q) u<a href="xxx.php?page=<?=ceil($num/10)-1?>">LastPage</a>
1 s1 H9 F/ n6 k% c; t2 _. I, l2 Z5 {( x
这是一个大致的思路,大家可以想想怎么来优化?十天学会php之第八天就说到这里,第九天说一下一些注意的问题。




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