<?php |
/* |
在这个分页的类中共有三个类函数,第一个函数的作用上面说过,第二个函数caculate主要是计算记录集的总条数,分多少页显示,同时把这些结果赋值给成员变量,以供下一个函数使用这些值。第三个函数,url就是实现记录集分页显示的代码。这里说一下,分页的算法,主要是用到这一个SQL语句:select * from table_name limit $start,$pageper;其中,$start是查询的起始位置,$pageper是每一页要显示的条数。 |
*/ |
include_once ( "db.inc.php" ); |
class FENYE extends DBSQL{ |
public $count_1 ; //返回结果记录集的总条数 |
private $pageper =3; //每页显示的记录集条数 |
public $pc ; //显示的总页数 |
private $sql = "select * from students" ; |
public $offset ; //当前的页码数 |
public function __constract(){ |
parent::__constract(); //调用父类里的方法链接数据库 |
} |
public function caculate( $sql = "" ){ |
$sql = $this ->sql; |
$result =mysql_query( $sql ) or die (mysql_error()); |
$count =mysql_num_rows( $result ); |
$this ->count_1= $count ; |
$pc = intval ( $count / $this ->pageper)+1; |
$this ->pc= $pc ; |
} |
public function url( $targetUrl ){ |
$pagesize = $this ->pageper ; //每页显示记录 |
$page =isset( $_GET [ 'page' ])? intval ( $_GET [ 'page' ]):1; //获取当前页 |
$sql = "select * from students limit " .( $page -1)* $pagesize . ",$pagesize" ; |
//echo $sql ;exit; |
$results =mysql_query( $sql ) or die (mysql_error()); |
while ( $row = mysql_fetch_array( $results )){ |
for ( $i =0; $i < count ( $row ); $i ++) |
echo $row [ $i ]. " " ; |
echo "<br>" ; |
} |
$offset =( $page -1)* $pagesize ; |
$prepage = $page -1; //上一页 |
$nextpage = $page +1; //下一页 |
$pagenav = "共" . $this ->count_1. " 条记录每页显示$pagesize 条记录,共" . $this ->pc. " 页,当前第$page 页" ; |
if ( $page ==1){ |
$strpage = "【第一页】【上一页】<a href='$targetUrl?page=$nextpage'>【下一页】</a><a href='$targetUrl?page=$pc'>【最后一页】</a>" ; |
} |
if ( $page >1&& $page <= $this ->pc){ |
$strpage = "<a href='$targetUrl?page=1'>【第一页】</a><a href='$targetUrl?page=$prepage'>【上一页】</a><a href='$targetUrl?page=$nextpage'>【下一页】</a><a href='$targetUrl?page=$pc'>【最后一页】</a>" ; |
} |
if ( $page == $this ->pc){ |
$strpage = "<a href='$targetUrl?page=1'>【第一页】</a><a href='$targetUrl?page=$prepage'>【上一页】</a>【下一页】【最后一页】" ; |
} |
$strpage = "$pagenav<br>$strpage" ; |
echo $strpage ; |
} |
} |
/* |
小函数注解: |
intval: 取得整数值; |
count: 计算一个数组的元素个数; |
expression_1?expression_2:expression_3;:如果第一个表达式为值,该函数的返回值就是第二个表达式的值,否则函数的返回值为第三个表达式的值。 |
为了程序的代码的安全起见,可是把类的成员变量的类型设置为private。*/ |
?> |