Board logo

标题: 十天学会php之第八天 [打印本页]

作者: admin    时间: 2008-3-26 16:40     标题: 十天学会php之第八天

2 G! l" E: l, F* ^0 S7 z
学习目的:做一个分页显示
& W- Z3 p7 {% _# E关键就是用到了SQL语句中的limit来限定显示的记录从几到几。我们需要一个记录当前页的变量$page,还需要总共的记录数$num6 I2 i% u5 I. d2 Q: ?% d" }! H
( d/ y0 r8 k5 ^/ _: {8 ~! s2 h' l0 B& Z
对于$page如果没有我们就让它=0,如果有<0就让它也=0,如果超过了总的页数就让他=总的页数。

3 H" ~& i4 ~& Y. T( F" l. n  w9 P/ b. e5 W3 L
$execc="select count(*) from tablename ";
" Z4 U" ?% z# ~; u  w3 x$resultc=mysql_query($execc);
3 E3 x. w9 g5 [- T1 N$rsc=mysql_fetch_array($resultc);( h! i, x: F, C, B
$num=$rsc[0];+ A0 J, E: z3 a) j' Q6 C1 Y3 h

4 w, {7 ^; ?% m- {% c
这样可以得到记录总数6 S2 Z7 A$ [1 s. t
ceil($num/10))如果一页10记录的话,这个就是总的页数
6 ~9 h. N1 B" }3 T& G. v/ T1 O1 |( w所以可以这么写( X) s( U  t  m  D3 Z6 t! q6 A% D  J4 G
if(empty($_GET['page']))
) ?. F4 k. Z4 |. D{
( Y: Y; y! R" }/ ^' A/ B$page=0;4 n% |6 H. B; N; {2 g; }
}% V# U, ~2 p1 E  K% m
else
% m7 Q  W* A9 {/ s& U$ s# j{
0 L) C  ]- E* t$page=$_GET['page'];: ~8 @) Q- P+ e- K- \; G; Y
if($page<0)$page=0;$ c6 v9 b  P/ _3 j7 y7 q
if($page>=ceil($num/10))$page=ceil($num/10)-1;//
因为page是从0开始的,所以要-1; G& n, A# P* n  j. b0 z
} 2 v, k- Y$ H' ]
# l8 G! v; R5 p) a- D8 o% u
这样$exec可以这么写
$exec="select * from tablename limit ".($page*10).",10";
6 W3 m6 ?; R3 N6 H//一页是10记录的
. \' V) @( [4 m( n1 o; x
最后我们需要做的就是几个连接:
9 c- d1 Z. o- D& l  z$ M<a href="xxx.php?page=0">FirstPage</a>
5 ~- M' |/ l9 b3 {! B1 z( S4 k' ?( m<a href="xxx.php?page=<?=($page-1)?>">PrevPage</a>
0 M# ^. j1 ]5 e2 ?3 d7 H! L* w  m<a href="xxx.php?page=<?=($page 1)?>">NextPage</a>
& i  v, w: y, @* b5 d3 O  n9 i<a href="xxx.php?page=<?=ceil($num/10)-1?>">LastPage</a>0 k: u7 _7 h+ d' r
  e. y' R& `) F* D
这是一个大致的思路,大家可以想想怎么来优化?十天学会php之第八天就说到这里,第九天说一下一些注意的问题。




欢迎光临 捌玖网络工作室 (http://89w.org/) Powered by Discuz! 7.2