返回列表 发帖

十天学会php之第八天

. E9 |" Y) z8 f) r. }2 d7 s/ h
学习目的:做一个分页显示
0 g4 _2 w, Q! b' h3 d0 Y关键就是用到了SQL语句中的limit来限定显示的记录从几到几。我们需要一个记录当前页的变量$page,还需要总共的记录数$num
% \# T; ~/ ^8 y3 a
4 d& q8 L- |% c$ A6 L2 c4 J对于$page如果没有我们就让它=0,如果有<0就让它也=0,如果超过了总的页数就让他=总的页数。

; {, U( i# M8 Y$ ]" I( Y2 h) V* ^2 t  |# y' i6 O& s
$execc="select count(*) from tablename ";" Z# V1 B2 C5 k* A
$resultc=mysql_query($execc);
& w( O2 b# I/ s7 F4 E  |$rsc=mysql_fetch_array($resultc);
, l; \0 @0 w: _3 l* r3 n9 o& R0 D# F$num=$rsc[0];
+ S0 x/ y; `- j' u* X4 V& u! \1 e, P
这样可以得到记录总数4 s' ?+ s* P4 O  t9 F4 ]/ v
ceil($num/10))如果一页10记录的话,这个就是总的页数8 F) j- ]- w$ g( K! B" G
所以可以这么写
& ?. R  ?7 T% T! s( e# q. }if(empty($_GET['page']))$ h. N7 x# e. \: Y5 ~
{
; B6 d5 D" r: b- h( F$page=0;
9 q3 }( p3 U/ H  W}
4 C/ E: Q& t+ `9 Zelse
, W$ d% S* T" t* q% K{( W+ Y, p* y/ ?/ R0 i( e$ w
$page=$_GET['page'];
8 Q( b! Q- b. X4 o" j2 \2 X/ lif($page<0)$page=0;6 Y  ?' R- ?0 R
if($page>=ceil($num/10))$page=ceil($num/10)-1;//
因为page是从0开始的,所以要-1
% O( A0 e. r$ d}
  ?# O$ K. x  h% U
+ P  A) _+ Y  W' u& Q2 u' l/ c: G这样$exec可以这么写
$exec="select * from tablename limit ".($page*10).",10";
6 l1 L; w* D$ M2 i9 p/ q) f( ?//一页是10记录的
% t+ W7 K2 d0 `& e& v" y
最后我们需要做的就是几个连接:% U! Y0 ^" \8 U6 O' n% J2 D: S
<a href="xxx.php?page=0">FirstPage</a>
2 {; @9 f/ k1 `( M' x4 ^# j<a href="xxx.php?page=<?=($page-1)?>">PrevPage</a>
$ ~4 o: v6 K* E# W<a href="xxx.php?page=<?=($page 1)?>">NextPage</a>
6 f- S# u) _  K8 a- {<a href="xxx.php?page=<?=ceil($num/10)-1?>">LastPage</a>
% f2 p9 Y9 S6 ~+ y: z9 b2 Z: O5 u9 r7 l- F, Q2 J9 X0 C9 W5 I
这是一个大致的思路,大家可以想想怎么来优化?十天学会php之第八天就说到这里,第九天说一下一些注意的问题。

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