返回列表 发帖

十天学会php之第八天


% z: b* S+ ^7 r3 T, L4 W% ^学习目的:做一个分页显示
* u0 D$ K# Z% f/ v3 H关键就是用到了SQL语句中的limit来限定显示的记录从几到几。我们需要一个记录当前页的变量$page,还需要总共的记录数$num
# L/ {; E( ]& l  Y& P
5 {! f' w& K4 ]& g6 q+ ^" c2 @  w& Z; ^对于$page如果没有我们就让它=0,如果有<0就让它也=0,如果超过了总的页数就让他=总的页数。
8 q" e7 J9 R' W! H

% j7 v5 P8 i! m3 r  N$execc="select count(*) from tablename ";
3 C" q$ u+ G9 [4 u) ~/ a$resultc=mysql_query($execc);+ X0 v" I1 I* g( z9 g7 W* T0 M
$rsc=mysql_fetch_array($resultc);
) z' g4 x+ H; G  z0 O; ]' c$num=$rsc[0];
. l6 E2 G- o+ j2 G+ i: F) g, \% D; B$ A/ y" N. K2 x2 i
这样可以得到记录总数
' }+ L; v. m8 F" ?7 Yceil($num/10))如果一页10记录的话,这个就是总的页数
% U) ]  w# S# {6 o所以可以这么写
& _; m( i5 v- ?7 o' _if(empty($_GET['page']))
2 M, C  g; _$ V' O$ Z0 a{0 t- g. B& C8 u& w, N7 W9 k
$page=0;) {; k5 g; v  [/ e- n1 a8 ~8 P# x6 r- ^
}
/ Q6 T! @7 R7 m8 F, Celse2 x& M1 t& d( Z0 ^+ |  ~
{: C0 i8 p$ o1 q6 O3 @: k
$page=$_GET['page'];
; `) Q/ r0 [' D% nif($page<0)$page=0;+ O0 K2 m5 B: a  Z# i
if($page>=ceil($num/10))$page=ceil($num/10)-1;//
因为page是从0开始的,所以要-1/ c) F# H% L; ~
}
/ K4 W+ z) m3 C4 e) F! @1 \2 D  f
; i0 q3 A2 E( ~" d这样$exec可以这么写
$exec="select * from tablename limit ".($page*10).",10";
$ b: |/ _' V; A* }2 N0 H3 ?//一页是10记录的
4 E/ O- {" D( A: a- R9 H
最后我们需要做的就是几个连接:
6 H, {/ {6 L5 A& B8 L( ]<a href="xxx.php?page=0">FirstPage</a>
% e- P' E$ Y# }, _<a href="xxx.php?page=<?=($page-1)?>">PrevPage</a>
8 ^6 L; T; W$ F6 @$ Z- c. F<a href="xxx.php?page=<?=($page 1)?>">NextPage</a>
+ |. M6 t: ]" o1 E; y<a href="xxx.php?page=<?=ceil($num/10)-1?>">LastPage</a>4 D; S  R& G8 @  ?/ h
) X) L* Q% T7 ]2 _+ U  U7 B
这是一个大致的思路,大家可以想想怎么来优化?十天学会php之第八天就说到这里,第九天说一下一些注意的问题。

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