Board logo

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

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


- b7 u1 a$ e3 e2 c# U学习目的:做一个分页显示
% L* ^" W( Q) w1 a+ ]0 I8 c关键就是用到了SQL语句中的limit来限定显示的记录从几到几。我们需要一个记录当前页的变量$page,还需要总共的记录数$num1 y6 v  j- h8 @3 z* L  O+ c$ Q% V& ?
! c5 E8 O& L& y, t) n5 J
对于$page如果没有我们就让它=0,如果有<0就让它也=0,如果超过了总的页数就让他=总的页数。
3 e( r9 K- h4 Q! |. B' ]1 m+ q' o
: `$ \) r% @/ @# n$ O; P
$execc="select count(*) from tablename ";8 e1 f. D+ G/ r- Z
$resultc=mysql_query($execc);# `1 A! S( K( l4 E
$rsc=mysql_fetch_array($resultc);
! @- D2 d3 h; e. d8 X" u$num=$rsc[0];
+ `' i2 V: T# ?3 R* E3 {) k7 W  \" R9 H/ {4 |; _
这样可以得到记录总数7 ^$ j: |) [1 T1 d( q" |
ceil($num/10))如果一页10记录的话,这个就是总的页数1 f; F( G  J1 u. G
所以可以这么写# c8 h6 x1 ^8 r* {) Y. g) {
if(empty($_GET['page']))
6 Q1 T4 r5 m: Z8 x2 {/ Z{$ y0 q2 o4 V9 x# u) g; S( I
$page=0;
. z4 A- o7 P/ j* h  g}
( k& E) E- E7 X# q' V! Helse3 B/ q2 i; ]+ T7 `. \- s, t
{
, q/ d1 D; D; q- l$ D" g$page=$_GET['page'];  W+ I0 K( j  C
if($page<0)$page=0;
# t6 K& V8 }+ R6 bif($page>=ceil($num/10))$page=ceil($num/10)-1;//
因为page是从0开始的,所以要-1
8 f) @+ }/ _' p$ [" [9 G. A}
3 D* ]* O) T7 P2 v, `
# h) O9 V# H1 O; z# g6 D5 u这样$exec可以这么写
$exec="select * from tablename limit ".($page*10).",10";
. G$ B/ [) Z. s# p- W/ l. C//一页是10记录的

" n; A/ u6 n4 `$ U最后我们需要做的就是几个连接:
3 w) n& i- l9 A8 K6 ]  c; D<a href="xxx.php?page=0">FirstPage</a> & t- S- T/ f* |/ e3 ^' A) R: C
<a href="xxx.php?page=<?=($page-1)?>">PrevPage</a> * T$ y/ O! d2 K) u& `
<a href="xxx.php?page=<?=($page 1)?>">NextPage</a>
: a$ @( ^# ?. j& e1 x. m* f<a href="xxx.php?page=<?=ceil($num/10)-1?>">LastPage</a>
5 M) K) s) l2 p' N& r
/ W4 ^. y9 P5 M1 c+ Q
这是一个大致的思路,大家可以想想怎么来优化?十天学会php之第八天就说到这里,第九天说一下一些注意的问题。




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