获得本站免费赞助空间请点这里
返回列表 发帖

十天学会php之第八天

/ {9 z* T8 L5 ~7 X
学习目的:做一个分页显示
1 v( y# g9 L6 H$ u. B% p7 k关键就是用到了SQL语句中的limit来限定显示的记录从几到几。我们需要一个记录当前页的变量$page,还需要总共的记录数$num
2 Z. l. k- n# O( L& H/ V! R, c5 A" D; g8 N3 Q2 z
对于$page如果没有我们就让它=0,如果有<0就让它也=0,如果超过了总的页数就让他=总的页数。
9 y% ]6 \0 U& l$ X# B$ a/ m  _' H" }

1 z) w0 Z  `$ R# C& s4 ?# K$execc="select count(*) from tablename ";
! z9 |/ q8 C2 @2 d8 G$resultc=mysql_query($execc);
; D* m9 q0 e3 b8 e0 p3 {7 g$rsc=mysql_fetch_array($resultc);: o9 t: }1 Y; }* q: N, V+ u
$num=$rsc[0];) X3 f$ @9 t+ b, d! C- s3 Z

- C* I  Y- \+ k/ h
这样可以得到记录总数" r2 }8 `/ @7 h$ H7 q
ceil($num/10))如果一页10记录的话,这个就是总的页数
) Y- @2 d5 f* S7 x3 C" L4 N所以可以这么写( e! T9 h) }' O3 g" _: J' m% _
if(empty($_GET['page']))9 V  T5 R  g. R: m) P) l
{
4 K; y. }# V9 G$page=0;" h) g& p1 ^' w$ ~* R7 \6 n' F
}
8 J7 r& e% D1 R2 ]1 ~1 v8 |  Oelse
  F7 s7 v) h) L1 U* p{& G2 B( H8 w* O7 D
$page=$_GET['page'];+ m1 ^! r! H: k) A6 L
if($page<0)$page=0;
" q  U6 P3 M2 q4 rif($page>=ceil($num/10))$page=ceil($num/10)-1;//
因为page是从0开始的,所以要-1" X# F* f# Q$ s8 w3 ^8 Y
}
6 P# c1 k, e6 x# i# O) N5 m
+ T) o. K0 ?6 l9 f) d* t这样$exec可以这么写
$exec="select * from tablename limit ".($page*10).",10";
0 x4 a) [# U5 T# u0 o//一页是10记录的
/ I; c: n, z2 \7 R4 ]& k
最后我们需要做的就是几个连接:5 U/ O# t: i8 c
<a href="xxx.php?page=0">FirstPage</a> 8 q; F$ P& t7 w2 s
<a href="xxx.php?page=<?=($page-1)?>">PrevPage</a> ' x0 \3 P- H, ^2 g4 N: h5 U
<a href="xxx.php?page=<?=($page 1)?>">NextPage</a>
3 l6 [! L" C! j7 M<a href="xxx.php?page=<?=ceil($num/10)-1?>">LastPage</a>0 b4 V% |( x2 H# c
( _1 S- W, ?$ q2 k' J* \
这是一个大致的思路,大家可以想想怎么来优化?十天学会php之第八天就说到这里,第九天说一下一些注意的问题。

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