Board logo

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

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


7 ^9 |$ |( y: Y1 }学习目的:做一个分页显示
6 r$ G/ ^" a9 \5 q% V关键就是用到了SQL语句中的limit来限定显示的记录从几到几。我们需要一个记录当前页的变量$page,还需要总共的记录数$num- c' X) `, K/ {5 N

5 t3 @7 L5 s( ]* o! `对于$page如果没有我们就让它=0,如果有<0就让它也=0,如果超过了总的页数就让他=总的页数。

1 m1 u2 I# k! f
, n' Y+ a5 M( G5 I2 h- ^" L8 y$execc="select count(*) from tablename ";4 e+ V, |# j0 \5 V+ ]2 h* R
$resultc=mysql_query($execc);
% N9 t) L+ ~: J) D) D5 }$rsc=mysql_fetch_array($resultc);
  c# V0 D, m- s4 r1 \% Z9 W$num=$rsc[0];5 E  f+ U) v. w$ {4 w3 `
  K% I( D7 V* j; T7 h1 C
这样可以得到记录总数3 c5 Z4 l( J( d( b$ |
ceil($num/10))如果一页10记录的话,这个就是总的页数, s) l3 s# i( l) ^2 t+ v& M. [3 S
所以可以这么写2 R* e/ O/ U2 ?7 s
if(empty($_GET['page']))- q: i! ~, m1 c" c. K7 [! D% g
{6 x; K& Y/ M, S2 O# l) p  a: F
$page=0;
( e1 h8 T) X/ X+ M}
  K9 M% M' ^& x' G9 T  f/ pelse& {; Y' h* J4 `# w, v7 I& J
{$ E* k3 T: R$ O8 [  r! Q
$page=$_GET['page'];; J9 Y: R. e$ D/ T% W  y" v
if($page<0)$page=0;7 k9 S6 k4 l- U2 A9 s% @
if($page>=ceil($num/10))$page=ceil($num/10)-1;//
因为page是从0开始的,所以要-1
' h2 i; e- w! @}
* D. h4 p* Q7 b( }. n1 I3 {
% f4 S) n$ A0 x9 e这样$exec可以这么写
$exec="select * from tablename limit ".($page*10).",10";
6 |* n7 p* ~% h3 {$ e: w  ^3 e//一页是10记录的
2 N' S5 v+ F9 B- B: f" C6 G
最后我们需要做的就是几个连接:
% {5 [) _/ W2 d<a href="xxx.php?page=0">FirstPage</a> 7 x( I2 k- q8 R* D/ M
<a href="xxx.php?page=<?=($page-1)?>">PrevPage</a> : {, y1 B7 ], E3 m7 V: Z2 X
<a href="xxx.php?page=<?=($page 1)?>">NextPage</a>
* Z' Y, z- h. q/ U- R* y+ g3 O<a href="xxx.php?page=<?=ceil($num/10)-1?>">LastPage</a>
+ b& l6 \; D' x
' g$ S) ~1 A; r' p) {: \
这是一个大致的思路,大家可以想想怎么来优化?十天学会php之第八天就说到这里,第九天说一下一些注意的问题。




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