标题:
十天学会php之第八天
[打印本页]
作者:
admin
时间:
2008-3-26 16:40
标题:
十天学会php之第八天
, k' L9 S) H3 I3 u* q% G) ]
学习目的:做一个分页显示
, l* ^0 }3 e4 F6 W1 i4 O1 B: L9 _
关键就是用到了
SQL
语句中的
limit
来限定显示的记录从几到几。我们需要一个记录当前页的变量
$page
,还需要总共的记录数
$num
5 {: v; E$ R' {$ v/ f. S% C9 ~
6 x) Y4 y5 s: g
对于
$page
如果没有我们就让它
=0
,如果有
<0
就让它也
=0
,如果超过了总的页数就让他
=
总的页数。
2 j8 H: e9 z% @6 C9 ?/ F
9 }% j1 _& p- H4 I+ a
$execc="select count(*) from tablename ";
3 F0 B3 w& i$ T; B. v2 M& b
$resultc=mysql_query($execc);
! a0 V; b: |+ V- O- z9 E3 k
$rsc=mysql_fetch_array($resultc);
- l% I( b' ~$ x/ J& j
$num=$rsc[0];
1 Z$ s; f1 W' C( W
+ o5 W' b; f0 F1 J1 B; q6 w! w
这样可以得到记录总数
# Q( t! i- b( \. d
ceil($num/10))
如果一页
10
记录的话,这个就是总的页数
- m: n" [2 T1 F% T
所以可以这么写
& h! n. \% l K1 ]' b. w/ }
if(empty($_GET['page']))
0 V, S& M! N' l3 y6 t
{
& x, |! `+ m ~9 x9 l3 b3 W
$page=0;
' D# i+ X. G: v0 H
}
( t& n8 b k$ S- |8 I& g
else
" Z& U0 I W5 P% }
{
h: c4 j: e( I2 n3 \# `% D
$page=$_GET['page'];
9 F- l; G" t% l$ l2 S1 p
if($page<0)$page=0;
& V2 l% x3 G# G% Q
if($page>=ceil($num/10))$page=ceil($num/10)-1;//
因为
page
是从
0
开始的,所以要
-1
4 ~- R* A0 Z) p: J% {. R [: q
}
( O i3 V" f& `) {/ ]/ w
" x& Q* v1 H5 x; V3 G
这样
$exec
可以这么写
$exec="select * from tablename limit ".($page*10).",10";
; e& \, F! s. u' j: t% O
//
一页是
10
记录的
( y) M1 g- ^" i( s, c5 V; m% w
最后我们需要做的就是几个连接:
/ W6 U% \& P$ l& M
<a href="xxx.php?page=0">FirstPage</a>
3 W/ l& t6 B! l* t9 v, q
<a href="xxx.php?page=<?=($page-1)?>">PrevPage</a>
$ ?" {9 X3 k$ H7 t3 N/ q5 E
<a href="xxx.php?page=<?=($page 1)?>">NextPage</a>
; d% c$ P+ J. o* s4 ]
<a href="xxx.php?page=<?=ceil($num/10)-1?>">LastPage</a>
" @6 y, Q% l& w# d- ]. T6 E
# _+ K u R: j! |2 Q2 p
这是一个大致的思路,大家可以想想怎么来优化?十天学会
php
之第八天就说到这里,第九天说一下一些注意的问题。
欢迎光临 捌玖网络工作室 (http://89w.org/)
Powered by Discuz! 7.2