返回列表 发帖

十天学会php之第八天

5 @4 r2 c, q+ l. k$ M
学习目的:做一个分页显示
7 ^- l% k0 j8 t& z关键就是用到了SQL语句中的limit来限定显示的记录从几到几。我们需要一个记录当前页的变量$page,还需要总共的记录数$num
& c+ s# \% ~3 V0 }& B
5 o5 H, K8 t8 E- j' E5 r对于$page如果没有我们就让它=0,如果有<0就让它也=0,如果超过了总的页数就让他=总的页数。

5 c2 p; b: l3 |- X) I
. Q4 _/ e& H- V: P0 ^+ O4 K6 A- i, A$execc="select count(*) from tablename ";8 U4 ^  \8 w/ ~3 j/ a
$resultc=mysql_query($execc);
# z' |; ^+ Q: Z2 f$rsc=mysql_fetch_array($resultc);
4 q; Z* |& p5 G: k$ u+ H5 R" j4 D- t$num=$rsc[0];9 q6 r7 k% F8 b! R$ J& L9 v

# F0 s6 i9 L! b9 i
这样可以得到记录总数" A3 P" t+ x7 O. @+ B
ceil($num/10))如果一页10记录的话,这个就是总的页数
0 x7 X: ]7 h: u所以可以这么写
. ?6 c, i9 w( C; [9 j& V' v; R2 z1 w. aif(empty($_GET['page']))7 D+ X! X( c9 w
{
. y$ }+ {7 t0 @  T! L4 Z8 Q$page=0;+ E& y' F$ ?8 ]/ B5 K5 t- ~
}
8 d  X+ m8 b: l: s  Eelse
  G* Q  i& M0 S4 [% ^{! ^& F- T* H- x% O
$page=$_GET['page'];$ ^5 s# S! n' T% ?
if($page<0)$page=0;& W& A4 p! L$ B) q) l4 U/ K
if($page>=ceil($num/10))$page=ceil($num/10)-1;//
因为page是从0开始的,所以要-1
+ }( i  \; u- \: ]$ w6 \' M} 8 Z! `4 ^2 u" f& S* O8 Q4 B
0 u4 u" ]4 x4 {1 Z
这样$exec可以这么写
$exec="select * from tablename limit ".($page*10).",10";  }) N* A+ H  d! q
//一页是10记录的
" g1 O& \, [0 z: k8 x; {& v/ t
最后我们需要做的就是几个连接:% O/ ~7 R* R# s0 L4 |3 L
<a href="xxx.php?page=0">FirstPage</a> 2 s6 X+ l% o: E
<a href="xxx.php?page=<?=($page-1)?>">PrevPage</a>
. W2 |9 b/ H- _. }3 B<a href="xxx.php?page=<?=($page 1)?>">NextPage</a>
* R/ \! z$ H0 ~" Y<a href="xxx.php?page=<?=ceil($num/10)-1?>">LastPage</a>
+ `# R) a% V  }! |0 G$ h/ E; J1 d% R2 D3 d( v0 ?
这是一个大致的思路,大家可以想想怎么来优化?十天学会php之第八天就说到这里,第九天说一下一些注意的问题。

返回列表
【捌玖网络】已经运行: