返回列表 发帖

十天学会php之第八天

$ P6 F( }6 K8 Z- x) K. E( y: h7 k/ V
学习目的:做一个分页显示7 B4 k  K% U3 H, p3 {9 b8 ^& p( f2 a
关键就是用到了SQL语句中的limit来限定显示的记录从几到几。我们需要一个记录当前页的变量$page,还需要总共的记录数$num
0 T( a' ?  k) Z7 N# P: ~# `7 }/ }( X
对于$page如果没有我们就让它=0,如果有<0就让它也=0,如果超过了总的页数就让他=总的页数。

6 l) w) ]% m: o! J6 X* k+ z# e! P( O  U5 K
$execc="select count(*) from tablename ";
; H  R2 \, ]9 L6 V3 W$resultc=mysql_query($execc);
+ B4 o# h+ @2 s% u* ]7 x4 g6 ]$rsc=mysql_fetch_array($resultc);. w+ F( c" j3 Z' T9 Q
$num=$rsc[0];% T* }# z7 |) K0 P0 u$ N

, ], T( X4 q- }6 n5 z" z' Q. }
这样可以得到记录总数
' Z3 m6 E- {0 _' J9 lceil($num/10))如果一页10记录的话,这个就是总的页数2 o/ z8 o& j- k0 h
所以可以这么写6 d5 @: v- [' Z9 I9 N8 b
if(empty($_GET['page'])); s3 W% P5 U5 u7 r/ z/ f8 i. T* e6 [
{% C0 {: Z7 F1 D, k. v" Q! |
$page=0;; f2 N0 N* o; K
}* I% V, R4 ?! j2 B- @
else7 X. z4 G8 q0 L% j" m$ V
{9 S$ J. E, @/ k8 @3 L! m  f
$page=$_GET['page'];; U/ ?( |% C7 o! }' \" v
if($page<0)$page=0;7 w* |1 B- F# c" D+ O* j( \
if($page>=ceil($num/10))$page=ceil($num/10)-1;//
因为page是从0开始的,所以要-16 H5 ^. i8 _0 c5 c& t3 R
} ' a: [! K/ ?9 q) p) B9 X

) k" e7 o% X7 @& U这样$exec可以这么写
$exec="select * from tablename limit ".($page*10).",10";
5 r: S3 f3 [5 G; k. G% Y0 I//一页是10记录的

# M, R( ~  G3 B8 G最后我们需要做的就是几个连接:
* Z+ p# [6 N; R* Y% K2 F7 m+ T: Q<a href="xxx.php?page=0">FirstPage</a> . S' L2 @+ {4 u$ b# o
<a href="xxx.php?page=<?=($page-1)?>">PrevPage</a>
8 D( K  n8 a+ u' N<a href="xxx.php?page=<?=($page 1)?>">NextPage</a>
$ P; J/ b3 _1 h9 b<a href="xxx.php?page=<?=ceil($num/10)-1?>">LastPage</a>
4 b5 A* u( v9 E
0 n) p% O5 ^( F) @# x
这是一个大致的思路,大家可以想想怎么来优化?十天学会php之第八天就说到这里,第九天说一下一些注意的问题。

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