发新话题
打印

十天学会php之第八天


朋友别哭,要坚定自己的信心,我们一路陪伴您!!!

十天学会php之第八天

) L& U. ]) [+ l( a
学习目的:做一个分页显示9 G# c$ X6 O2 t  L3 v. N
关键就是用到了SQL语句中的limit来限定显示的记录从几到几。我们需要一个记录当前页的变量$page,还需要总共的记录数$num
; B$ ?/ s7 a. l1 l& S: Z9 Q6 z& \! Q9 R" _
对于$page如果没有我们就让它=0,如果有<0就让它也=0,如果超过了总的页数就让他=总的页数。

1 p  ]6 d& c+ |2 `, P& {& L
/ z7 b* g6 D/ q3 H8 h* y$execc="select count(*) from tablename ";/ U* F$ \! w; }9 ^: O
$resultc=mysql_query($execc);
. k  N$ n2 }- y1 g$rsc=mysql_fetch_array($resultc);
, @9 c$ N# U2 E+ V$ g$num=$rsc[0];
) n. `1 N0 v- _, T. n
' Y1 F, `# a* g7 |0 f
这样可以得到记录总数
5 V' D6 W- ~( U* _ceil($num/10))如果一页10记录的话,这个就是总的页数5 b, U% b8 U( g8 W
所以可以这么写: ^, |" E) @- H' K8 C$ J7 N) G
if(empty($_GET['page']))
0 u, E+ N8 B* j2 u% ?{
" @; {. v% \& [$page=0;6 }: w% ]9 i0 B, o9 [* k
}0 h3 d% M( M& Q. N$ N8 d7 g& f/ V" E. ]
else
) j1 f6 v& i6 Y8 _# I# P" {9 N{0 v& m2 I9 S0 M
$page=$_GET['page'];+ W6 n  t# H: E  b) B! k' U
if($page<0)$page=0;% Y' J7 W1 J, C. V, t1 |
if($page>=ceil($num/10))$page=ceil($num/10)-1;//
因为page是从0开始的,所以要-1  j4 O* J1 a, z5 R
} 5 \5 ^5 z5 g  ~& ~, v( r
; P  y' [8 X+ o  l/ Z6 _
这样$exec可以这么写
$exec="select * from tablename limit ".($page*10).",10";. F( P; q6 a2 A; I1 q! o! j# i
//一页是10记录的

$ G  y9 e8 A3 ^' Z# m) r% ]4 x最后我们需要做的就是几个连接:
+ |+ j: e( [8 u  n1 v# h/ U! v: B' M<a href="xxx.php?page=0">FirstPage</a> ( \) G1 S4 ]1 W* _
<a href="xxx.php?page=<?=($page-1)?>">PrevPage</a>
6 l4 o$ }, A/ Y/ f$ P, K<a href="xxx.php?page=<?=($page 1)?>">NextPage</a> - m2 p1 U4 r. m4 k0 G- S
<a href="xxx.php?page=<?=ceil($num/10)-1?>">LastPage</a>3 C, ^& q0 C$ n7 u  e) `

! \/ [( v! G1 s0 b9 A. y
这是一个大致的思路,大家可以想想怎么来优化?十天学会php之第八天就说到这里,第九天说一下一些注意的问题。

TOP

发新话题