Board logo

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

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

2 W3 |. A+ p( m) f
学习目的:做一个分页显示  Y2 P2 E2 O* C5 i8 @* m
关键就是用到了SQL语句中的limit来限定显示的记录从几到几。我们需要一个记录当前页的变量$page,还需要总共的记录数$num, ?7 Z; m# y7 U1 w8 N
, z: w9 ^, N7 F" Q2 p& z
对于$page如果没有我们就让它=0,如果有<0就让它也=0,如果超过了总的页数就让他=总的页数。

' f9 H1 S+ \4 F. g- I
# x. k$ [& x, l1 E# S$execc="select count(*) from tablename ";$ K+ b/ [$ ]2 ], K
$resultc=mysql_query($execc);% x2 a( U, N* U+ D$ K5 A
$rsc=mysql_fetch_array($resultc);
9 m4 d7 j+ }  b$num=$rsc[0];
9 v9 \! L9 I  D: T2 n
& N! [; `3 z  F3 [
这样可以得到记录总数
( _+ j6 e: J# {4 tceil($num/10))如果一页10记录的话,这个就是总的页数
6 W1 n: ~  q# D. K/ @所以可以这么写7 G4 x) Q: v! \) J5 x, b3 X
if(empty($_GET['page']))4 h$ ~/ K/ i* E8 L1 F3 p
{: i6 y6 l. \4 D+ M# t4 r7 \2 j
$page=0;
3 m* {" ?7 g8 f# f7 D( m}
  W1 [5 B2 f  E! T1 h) _* [else! H# l4 _3 Z6 A7 H! L
{
: Z3 P$ ]$ N3 a" r( q$page=$_GET['page'];
3 I0 e& k$ ?7 J0 U8 l+ O6 `' J$ Bif($page<0)$page=0;
$ b4 P8 \; c- wif($page>=ceil($num/10))$page=ceil($num/10)-1;//
因为page是从0开始的,所以要-1
: n1 k% ]5 x% O: \5 X1 W  r% G* W} ' U- {# j9 @) u5 y* H% Y! s
3 `  H. y8 N0 L. Q
这样$exec可以这么写
$exec="select * from tablename limit ".($page*10).",10";
. u5 F% W6 y7 Z: ?/ v) O1 y//一页是10记录的

/ S/ m/ |- l/ P) \3 \+ d$ d: `最后我们需要做的就是几个连接:% S8 O# j' `& h7 e! l
<a href="xxx.php?page=0">FirstPage</a> & ~/ Y- _6 H( B8 c; h
<a href="xxx.php?page=<?=($page-1)?>">PrevPage</a> ) v9 O, b% S/ A1 |! ~6 G
<a href="xxx.php?page=<?=($page 1)?>">NextPage</a> 6 I0 E+ p. V6 B9 u! h- t1 O2 V
<a href="xxx.php?page=<?=ceil($num/10)-1?>">LastPage</a>
* K( x) k& F( p3 ]2 \$ ^# q. d
5 Z2 l# c4 X/ `2 n' R
这是一个大致的思路,大家可以想想怎么来优化?十天学会php之第八天就说到这里,第九天说一下一些注意的问题。




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