返回列表 发帖

十天学会php之第八天


# H/ Q- E/ s# n7 q" f* \学习目的:做一个分页显示& h  y& g$ c  q% Q- t! j# K7 ?
关键就是用到了SQL语句中的limit来限定显示的记录从几到几。我们需要一个记录当前页的变量$page,还需要总共的记录数$num( u9 G* v; k5 Y; a7 ]

9 D; K1 J- E% j: C: X+ u$ ]9 ~对于$page如果没有我们就让它=0,如果有<0就让它也=0,如果超过了总的页数就让他=总的页数。
  N& y# g, ?# w) C, q
; r2 J3 @+ \3 D8 F* ]6 Y  L
$execc="select count(*) from tablename ";
8 k; |. P1 p$ q3 |$resultc=mysql_query($execc);
6 b5 P+ b# d9 z* e) F, o) E$rsc=mysql_fetch_array($resultc);# E+ m8 u1 b% m* t& n* ]  F! n
$num=$rsc[0];
- J/ F% f3 s9 W3 k3 {+ W; G
$ L6 p0 n+ s5 m
这样可以得到记录总数& N- T- L) V5 g# U) K$ A7 e
ceil($num/10))如果一页10记录的话,这个就是总的页数+ E0 Z* X8 ]+ o7 |: j2 V% K( t. C
所以可以这么写
+ S  P3 y. v7 r, k4 o" Zif(empty($_GET['page']))9 k! v; J% W8 }/ ]) U! ^* D
{% E/ p3 {) p7 s4 U# Q/ X4 o
$page=0;% x: x% p) u3 l6 b
}8 X4 f8 I# X# q
else
0 G3 m$ x/ \) F/ {. D{* W# ^0 d; I$ a. N& R
$page=$_GET['page'];- O1 c- A" e! ]9 k2 Q! u
if($page<0)$page=0;9 _* m% C6 i/ p. n* q" M
if($page>=ceil($num/10))$page=ceil($num/10)-1;//
因为page是从0开始的,所以要-1
5 R! q6 N5 j4 V) k5 k3 ^& {} . J# j" C0 h) m$ O6 X  d5 z6 E

! E" t: v! B+ X: s: h( F这样$exec可以这么写
$exec="select * from tablename limit ".($page*10).",10";, z0 E$ i% Y4 ]6 C
//一页是10记录的
" T, L; c, ]* `$ D/ ~) R; v' U! r
最后我们需要做的就是几个连接:
" I8 A5 t6 V1 o% Z, e6 P<a href="xxx.php?page=0">FirstPage</a>
0 Q# Q, y: _+ O9 N' V4 D<a href="xxx.php?page=<?=($page-1)?>">PrevPage</a>
  a# D) ?% K6 G6 D- O$ {<a href="xxx.php?page=<?=($page 1)?>">NextPage</a>
8 G! |  r" H& l8 R, H1 G<a href="xxx.php?page=<?=ceil($num/10)-1?>">LastPage</a>. L3 F* [  R8 j8 V- t) n

# D* N! W. w! w" M# s
这是一个大致的思路,大家可以想想怎么来优化?十天学会php之第八天就说到这里,第九天说一下一些注意的问题。

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