Board logo

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

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

% |! k% i8 d7 [! z9 I
学习目的:做一个分页显示# X! C9 W5 R+ I% h& ?2 R/ h
关键就是用到了SQL语句中的limit来限定显示的记录从几到几。我们需要一个记录当前页的变量$page,还需要总共的记录数$num
: Q9 l; D2 A- I9 K! F( i4 W# v9 l' r& ^6 _; ^
对于$page如果没有我们就让它=0,如果有<0就让它也=0,如果超过了总的页数就让他=总的页数。

. y: W+ M1 D$ ?$ s7 K. e- i
  t6 c( J5 H; O% q$execc="select count(*) from tablename ";
5 Q5 \' d+ C, K% c/ G. l! z, V# `1 i$resultc=mysql_query($execc);
) X+ ?' T" ~& X$rsc=mysql_fetch_array($resultc);5 j1 X  O5 g: t7 K* ]
$num=$rsc[0];
! k  Z# H$ f' U- d: @3 D' Q! `
5 F0 k) o( O& ?1 Q/ }2 }
这样可以得到记录总数
+ i: I2 f6 ]5 W( @8 M: N7 Jceil($num/10))如果一页10记录的话,这个就是总的页数( n9 q! ~! {; F9 ?; t' @
所以可以这么写) W! c  P' E- S& `0 d; i- W9 l
if(empty($_GET['page'])): |- L- e' v" \, y: |3 f8 T
{
) _: j6 {( t$ A0 w$page=0;1 U8 ]$ g0 u; X: H
}
! h# l! R7 @* _* ~" lelse
/ c- b+ P; L; m* ~& h{
$ a- ]" b) ?- K( m: q$ F$page=$_GET['page'];; B5 \+ U& x+ [9 E( q1 C+ ^
if($page<0)$page=0;! G$ ~; O0 v7 U' L
if($page>=ceil($num/10))$page=ceil($num/10)-1;//
因为page是从0开始的,所以要-1
* \: J  o/ J$ w7 ?, ]& I# K} , y; c& N( u. o9 q- h' p' d$ k
0 R; U# F/ m: j: `7 ]
这样$exec可以这么写
$exec="select * from tablename limit ".($page*10).",10";( \) \. @: @: U, v7 P% c
//一页是10记录的

  P% W2 o) F& J4 B$ e% w最后我们需要做的就是几个连接:3 g# `# c8 J, o- j3 \1 J6 N
<a href="xxx.php?page=0">FirstPage</a> - d! O% ?# B* i# i, m8 ]/ Z. h
<a href="xxx.php?page=<?=($page-1)?>">PrevPage</a> 4 W0 a0 s) t5 ^3 }% C, y! i
<a href="xxx.php?page=<?=($page 1)?>">NextPage</a> 3 Z: G2 d% l8 v8 Q2 s
<a href="xxx.php?page=<?=ceil($num/10)-1?>">LastPage</a>
5 I4 T. N9 [. o5 u( ?1 ^! M$ N" ~' Q& x! J' t  l: w
这是一个大致的思路,大家可以想想怎么来优化?十天学会php之第八天就说到这里,第九天说一下一些注意的问题。




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