返回列表 发帖

十天学会php之第八天

6 K/ s; W8 u9 j/ d
学习目的:做一个分页显示
" C7 W/ z3 w5 `- D" M0 }关键就是用到了SQL语句中的limit来限定显示的记录从几到几。我们需要一个记录当前页的变量$page,还需要总共的记录数$num
7 ?# C, @# G0 ^" h# J
& V: O0 ^* j0 H* e" B2 P0 @" [对于$page如果没有我们就让它=0,如果有<0就让它也=0,如果超过了总的页数就让他=总的页数。

  D, _( R1 A# I1 z
( d7 }9 h6 k8 v% J5 F1 O: s9 r$execc="select count(*) from tablename ";- l, g; G8 b, F, u# b
$resultc=mysql_query($execc);
  ?; F# \  D1 V$rsc=mysql_fetch_array($resultc);
7 l- z4 z- C& f$ U; e$num=$rsc[0];
7 I/ U& |1 u: B/ l! w
' ]/ L8 u; C4 Z0 p8 l+ u
这样可以得到记录总数5 V, W# f% }6 d. M% E- T
ceil($num/10))如果一页10记录的话,这个就是总的页数1 H* `" y3 I: H1 @( I
所以可以这么写
0 r4 O1 |. g* Cif(empty($_GET['page']))
, G# K( z4 d+ y  A. @* Z) \; {{8 Q4 |5 P  F+ o4 K/ J" y
$page=0;
2 }9 v. o. b! N, B- h" W3 r}! q  v, Q8 `/ I" g4 x
else
1 P0 N; c# C  z& c( v* z{% U- T& D: W, D7 S# o
$page=$_GET['page'];, @: k$ M7 N" V# @% `
if($page<0)$page=0;
+ v9 o; H( [* `5 v; Rif($page>=ceil($num/10))$page=ceil($num/10)-1;//
因为page是从0开始的,所以要-1
! V3 H+ m: h0 h5 G/ v}
/ k/ p& k" ?3 D& k" m2 @1 I! u8 y- Y5 }& r+ S4 u4 t6 H7 ^, E
这样$exec可以这么写
$exec="select * from tablename limit ".($page*10).",10";
& z$ O6 A8 Z8 t0 D5 X//一页是10记录的
% t& |6 H) g( v
最后我们需要做的就是几个连接:* x* C$ r" Z" u% x
<a href="xxx.php?page=0">FirstPage</a> " [: l1 }! r, @
<a href="xxx.php?page=<?=($page-1)?>">PrevPage</a>
, R8 d+ ]! p/ E9 e5 L# l<a href="xxx.php?page=<?=($page 1)?>">NextPage</a> 4 i% h- _. ~' c6 C1 \+ x
<a href="xxx.php?page=<?=ceil($num/10)-1?>">LastPage</a>
, R8 `- {' `$ V0 n  L8 H+ ~# B7 a  ]% R7 u* q
这是一个大致的思路,大家可以想想怎么来优化?十天学会php之第八天就说到这里,第九天说一下一些注意的问题。

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