  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14249
- 金币
- 2415
- 威望
- 1647
- 贡献
- 1363
|
9 Q7 k" p j8 M+ @$ U学习目的:做一个分页显示2 y1 j/ N2 t4 z& U0 A
关键就是用到了SQL语句中的limit来限定显示的记录从几到几。我们需要一个记录当前页的变量$page,还需要总共的记录数$num. y4 ^' f: B* H+ q# i" A3 u( a
1 v+ o/ X$ T* i" A2 Y6 H对于$page如果没有我们就让它=0,如果有<0就让它也=0,如果超过了总的页数就让他=总的页数。9 C" x# T& d8 W9 f, ?
. ]1 G& }: Q; @+ J/ K, ?' x
$execc="select count(*) from tablename ";
! c! b( }4 U8 _! o, T: A3 y$resultc=mysql_query($execc);" _# Y$ b+ ~' x
$rsc=mysql_fetch_array($resultc);
4 f7 e! Y5 O5 K5 k! y4 b. m$num=$rsc[0];7 |/ h. ^5 ?$ ~6 ]3 J
; R$ A J% Q, n T; H这样可以得到记录总数
: Z* x) S( ?$ o4 ^; n% E* vceil($num/10))如果一页10记录的话,这个就是总的页数3 _: ?- R; n* A! @
所以可以这么写" a* {4 }! p9 l* l; G+ k
if(empty($_GET['page']))
6 k+ Q* }) o9 d' F ^{
) s- T9 P+ ~, y7 X# D6 @$page=0; _. r" @2 R+ J' l6 {; l3 `, P5 ^
}( w9 E' D" O8 H y: ?
else
?& ^% r6 J# W$ c4 n7 L{
) |. {' e) ?( o$page=$_GET['page'];0 e: y1 k0 @+ R' I, `8 Z, D
if($page<0)$page=0;
9 H/ b ~& I6 ^if($page>=ceil($num/10))$page=ceil($num/10)-1;//因为page是从0开始的,所以要-18 |, G4 a4 O6 K" S# Q+ A
} / \# I8 F" E4 R* F; W: H
& K: |6 Z: T1 g
这样$exec可以这么写 $exec="select * from tablename limit ".($page*10).",10";
3 C+ k6 f& W$ q A2 J$ X//一页是10记录的
9 |0 j' t% E/ W5 Y5 X6 j1 I3 l# P$ ]最后我们需要做的就是几个连接:5 H8 o9 I! Y% C$ J. Q( A
<a href="xxx.php?page=0">FirstPage</a> * ]+ ?9 b% o- h0 g( g$ g2 U6 ]: x
<a href="xxx.php?page=<?=($page-1)?>">PrevPage</a> ' \7 |2 o1 I+ F% R& Q
<a href="xxx.php?page=<?=($page 1)?>">NextPage</a> 3 \) u. G s; s& o6 j
<a href="xxx.php?page=<?=ceil($num/10)-1?>">LastPage</a>
- r- z( F' p) R* s% R' N+ e3 h+ d% l2 F5 S }3 Y
这是一个大致的思路,大家可以想想怎么来优化?十天学会php之第八天就说到这里,第九天说一下一些注意的问题。 |
|