Board logo

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

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


, k' L9 S) H3 I3 u* q% G) ]学习目的:做一个分页显示, l* ^0 }3 e4 F6 W1 i4 O1 B: L9 _
关键就是用到了SQL语句中的limit来限定显示的记录从几到几。我们需要一个记录当前页的变量$page,还需要总共的记录数$num
5 {: v; E$ R' {$ v/ f. S% C9 ~6 x) Y4 y5 s: g
对于$page如果没有我们就让它=0,如果有<0就让它也=0,如果超过了总的页数就让他=总的页数。
2 j8 H: e9 z% @6 C9 ?/ F
9 }% j1 _& p- H4 I+ a
$execc="select count(*) from tablename ";3 F0 B3 w& i$ T; B. v2 M& b
$resultc=mysql_query($execc);! a0 V; b: |+ V- O- z9 E3 k
$rsc=mysql_fetch_array($resultc);
- l% I( b' ~$ x/ J& j$num=$rsc[0];1 Z$ s; f1 W' C( W

+ o5 W' b; f0 F1 J1 B; q6 w! w
这样可以得到记录总数
# Q( t! i- b( \. dceil($num/10))如果一页10记录的话,这个就是总的页数- m: n" [2 T1 F% T
所以可以这么写
& h! n. \% l  K1 ]' b. w/ }if(empty($_GET['page']))0 V, S& M! N' l3 y6 t
{
& x, |! `+ m  ~9 x9 l3 b3 W$page=0;
' D# i+ X. G: v0 H}( t& n8 b  k$ S- |8 I& g
else
" Z& U0 I  W5 P% }{
  h: c4 j: e( I2 n3 \# `% D$page=$_GET['page'];9 F- l; G" t% l$ l2 S1 p
if($page<0)$page=0;
& V2 l% x3 G# G% Qif($page>=ceil($num/10))$page=ceil($num/10)-1;//
因为page是从0开始的,所以要-14 ~- R* A0 Z) p: J% {. R  [: q
} ( O  i3 V" f& `) {/ ]/ w
" x& Q* v1 H5 x; V3 G
这样$exec可以这么写
$exec="select * from tablename limit ".($page*10).",10";
; e& \, F! s. u' j: t% O//一页是10记录的
( y) M1 g- ^" i( s, c5 V; m% w
最后我们需要做的就是几个连接:
/ W6 U% \& P$ l& M<a href="xxx.php?page=0">FirstPage</a> 3 W/ l& t6 B! l* t9 v, q
<a href="xxx.php?page=<?=($page-1)?>">PrevPage</a> $ ?" {9 X3 k$ H7 t3 N/ q5 E
<a href="xxx.php?page=<?=($page 1)?>">NextPage</a>
; d% c$ P+ J. o* s4 ]<a href="xxx.php?page=<?=ceil($num/10)-1?>">LastPage</a>
" @6 y, Q% l& w# d- ]. T6 E# _+ K  u  R: j! |2 Q2 p
这是一个大致的思路,大家可以想想怎么来优化?十天学会php之第八天就说到这里,第九天说一下一些注意的问题。




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