返回列表 发帖

十天学会php之第八天

( T# ^9 I& m9 W& g
学习目的:做一个分页显示
6 E+ B% E0 D; K" i关键就是用到了SQL语句中的limit来限定显示的记录从几到几。我们需要一个记录当前页的变量$page,还需要总共的记录数$num; E* x% [% @; A* j) |

0 \2 V; @1 _% U6 U. ]* n: C% x/ r: a对于$page如果没有我们就让它=0,如果有<0就让它也=0,如果超过了总的页数就让他=总的页数。
$ j4 |9 B; v+ Z7 w# o5 I

( G3 X1 |2 ?4 I$execc="select count(*) from tablename ";3 M. n" [) H9 i& B
$resultc=mysql_query($execc);
* x- a" W5 u  E  T5 ^$ x$rsc=mysql_fetch_array($resultc);
* W  M9 O, `+ `* H4 f) b) M/ _/ q$num=$rsc[0];
: h* F# W. W! ]& h) ?, I
% _: B3 A9 r2 l( D1 ]
这样可以得到记录总数
# A  G  j) i& Z! X- ?7 `' R6 yceil($num/10))如果一页10记录的话,这个就是总的页数6 ?; ~0 B) J- f$ Y5 `1 Y. x
所以可以这么写' E' r+ h( h. ]2 h  W* [( z
if(empty($_GET['page']))+ O- `5 p, w* D
{
! Y8 Y/ E( I7 `$ l$page=0;4 v5 g  Y$ Q- x
}
; r. _0 `( o, Y# {4 c# ]4 `3 K, {6 Jelse
) C' c+ t7 N  r2 ~# t9 Y{+ O' {# g& r* z$ n( J( y9 t
$page=$_GET['page'];
. l. D' W. y- f; Q' E# D+ vif($page<0)$page=0;
, Z( Y. Z: E$ b6 }' }if($page>=ceil($num/10))$page=ceil($num/10)-1;//
因为page是从0开始的,所以要-10 c, c8 s! ?- ~( N3 p7 x6 }( X, G
}
$ V0 q: g+ ^* y0 p) R, e1 Y, ~6 ]) ~4 I1 Z2 M
这样$exec可以这么写
$exec="select * from tablename limit ".($page*10).",10";
$ w: e# p7 V$ W! M7 y//一页是10记录的
5 Y2 s" }+ o* d# S
最后我们需要做的就是几个连接:4 S9 R6 J! U* B9 w
<a href="xxx.php?page=0">FirstPage</a> % z$ ^7 ]+ ^! g0 ~# J
<a href="xxx.php?page=<?=($page-1)?>">PrevPage</a>
. k. Y$ N8 c3 n1 c" C; q, A1 e9 @<a href="xxx.php?page=<?=($page 1)?>">NextPage</a>
& y5 c- T' v; x2 \; p+ P<a href="xxx.php?page=<?=ceil($num/10)-1?>">LastPage</a>
9 a0 J1 {) l2 i6 R' w9 N
6 ^, x2 W$ F& h/ t
这是一个大致的思路,大家可以想想怎么来优化?十天学会php之第八天就说到这里,第九天说一下一些注意的问题。

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