封装的类:
<? php
/* ********************************************
类名: PageSupport
功能:分页显示MySQL数据库中的数据
********************************************** */
class PageSupport{
// 属性
var $sql ; // 所要显示数据的SQL查询语句
var $page_size ; // 每页显示最多行数
var $start_index ; // 所要显示记录的首行序号
var $total_records ; // 记录总数
var $current_records ; // 本页读取的记录数
var $result ; // 读出的结果
var $total_pages ; // 总页数
var $current_page ; // 当前页数
var $display_count = 30 ; // 显示的前几页和后几页数
var $arr_page_query ; // 数组,包含分页显示需要传递的参数
var $first ;
var $prev ;
var $next ;
var $last ;
// 方法
/* ********************************************
构造函数:__construct()
输入参数:
$ppage_size:每页显示最多行数
********************************************** */
function PageSupport( $ppage_size )
{
$this -> page_size = $ppage_size ;
$this -> start_index = 0 ;
}
/* ********************************************
构造函数:__destruct()
输入参数:
********************************************** */
function __destruct()
{
}
/* ********************************************
get函数:__get()
********************************************** */
function __get( $property_name )
{
if ( isset ( $this -> $property_name ))
{
return ( $this -> $property_name );
}
else
{
return ( NULL );
}
}
/* ********************************************
set函数:__set()
********************************************** */
function __set( $property_name , $value )
{
$this -> $property_name = $value ;
}
/* ********************************************
函数名:read_data
功能: 根据SQL查询语句从表中读取相应的记录
返回值:属性二维数组result[记录号][字段名]
********************************************** */
function read_data()
{
$psql = $this -> sql;
// 查询数据,数据库链接等信息应在类调用的外部实现
$result = mysql_query ( $psql ) or die ( mysql_error ());
$this -> total_records = mysql_num_rows ( $result );
// 利用LIMIT关键字获取本页所要显示的记录
if ( $this -> total_records > 0 )
{
$this -> start_index = ( $this -> current_page - 1 ) * $this -> page_size;
$psql = $psql . " LIMIT " . $this -> start_index . " , " . $this -> page_size;
$result = mysql_query ( $psql ) or die ( mysql_error ());
$this -> current_records = mysql_num_rows ( $result );
// 将查询结果放在result数组中
$i = 0 ;
while ( $row = mysql_fetch_Array ( $result ))
{
$this -> result[ $i ] = $row ;
$i ++ ;
}
}
// 获取总页数、当前页信息
$this -> total_pages = ceil ( $this -> total_records / $this -> page_size);
$this -> first = 1 ;
$this -> prev = $this -> current_page - 1 ;
$this -> next = $this -> current_page + 1 ;
$this -> last = $this -> total_pages;
}
/* ********************************************
函数名:standard_navigate()
功能: 显示首页、下页、上页、未页
********************************************** */
function standard_navigate()
{
echo " <div align=center> " ;
echo " <form action= " . $_SERVER [ ' PHP_SELF ' ] . " method=\ " get\ " > " ;
echo " <font color = red size ='4'>第 " . $this -> current_page . " 页/共 " . $this -> total_pages . " 页</font> " ;
echo " " ;
echo " 跳到<input type=\ " text\ " size=\Ř\ " name = \ " current_page\ " value = ' ".$this->current_page." ' /> 页 " ;
echo " < input type = \ " submit\ " value = \ " 提交\ " /> " ;
//生成导航链接
if ( $this ->current_page > 1) {
echo " < A href = " . $_SERVER ['PHP_SELF']. " ? current_page = " . $this ->first. " > 首页 </ A >| " ;
echo " < A href = " . $_SERVER ['PHP_SELF']. " ? current_page = " . $this ->prev. " > 上一页 </ A >| " ;
}
if( $this ->current_page < $this ->total_pages) {
echo " < A href = " . $_SERVER ['PHP_SELF']. " ? current_page = " . $this ->next. " > 下一页 </ A >| " ;
echo " < A href = " . $_SERVER ['PHP_SELF']. " ? current_page = " . $this ->last. " > 末页 </ A > " ;
}
echo " </ form > " ;
echo " </ div > " ;
}
/*********************************************
函数名:full_navigate()
功能: 显示首页、下页、上页、未页
生成导航链接 如1 2 3 ... 10 11
***********************************************/
function full_navigate()
{
echo " < div align = center > " ;
echo " < form action = " . $_SERVER ['PHP_SELF']. " method = \ " get\ " > " ;
echo " < font color = red size = ' 4 ' > 第 " . $this ->current_page. " 页 / 共 " . $this ->total_pages. " 页 </ font > " ;
echo " " ;
echo " 跳到 < input type = \ " text\ " size = \Ř\ " name=\ " current_page\ " value=' " . $this -> current_page . " '/>页 " ;
echo " <input type=\ " submit\ " value=\ " 提交\ " /> " ;
// 生成导航链接 如1 2 3 ... 10 11
$front_start = 1 ;
if ( $this -> current_page > $this -> display_count){
$front_start = $this -> current_page - $this -> display_count;
}
for ( $i = $front_start ; $i < $this -> current_page; $i ++ ){
echo " <a href= " . $_SERVER [ ' PHP_SELF ' ] . " ?page= " . $i . " >[ " . $i . " ]</a> " ;
}
echo " [ " . $this -> current_page . " ] " ;
$displayCount = $this -> display_count;
if ( $this -> total_pages > $displayCount && ( $this -> current_page + $displayCount ) < $this -> total_pages){
$displayCount = $this -> current_page + $displayCount ;
} else {
$displayCount = $this -> total_pages;
}
for ( $i = $this -> current_page + 1 ; $i <= $displayCount ; $i ++ ){
echo " <a href= " . $_SERVER [ ' PHP_SELF ' ] . " ?current_page= " . $i . " >[ " . $i . " ]</a> " ;
}
// 生成导航链接
if ( $this -> current_page > 1 ) {
echo " <A href= " . $_SERVER [ ' PHP_SELF ' ] . " ?current_page= " . $this -> first . " >首页</A>| " ;
echo " <A href= " . $_SERVER [ ' PHP_SELF ' ] . " ?current_page= " . $this -> prev . " >上一页</A>| " ;
}
if ( $this -> current_page < $this -> total_pages) {
echo " <A href= " . $_SERVER [ ' PHP_SELF ' ] . " ?current_page= " . $this -> next . " >下一页</A>| " ;
echo " <A href= " . $_SERVER [ ' PHP_SELF ' ] . " ?current_page= " . $this -> last . " >末页</A> " ;
}
echo " </form> " ;
echo " </div> " ;
}
}
?>
写在php页面里面的代码:
< div class = " index " >
<? php
include_once ( " fenye_php.php " ); // 引入类
// /////////////////////////////////////////////////////////////////////
$con = mysql_connect ( " localhost " , " root " , "" );
if ( ! $con )
{
die ( ' Could not connect: ' . mysql_error ());
}
mysql_select_db ( " myblog " , $con ); // 选取数据库
$PAGE_SIZE = 10 ; // 设置每页显示的数目
// /////////////////////////////////////////////////////////////////////
$pageSupport = new PageSupport( $PAGE_SIZE ); // 实例化PageSupport对象
$current_page = $_GET [ " current_page " ]; // 分页当前页数
if ( isset ( $current_page )) {
$pageSupport -> __set( " current_page " , $current_page );
} else {
$pageSupport -> __set( " current_page " , 1 );
}
$pageSupport -> __set( " sql " , " select * from article " );
$pageSupport -> read_data(); // 读数据
if ( $pageSupport -> current_records > 0 ) // 如果数据不为空,则组装数据
{
for ( $i = 0 ; $i < $pageSupport -> current_records; $i ++ )
{
$title = $pageSupport -> result[ $i ][ " title " ];
$content = $pageSupport -> result[ $i ][ " content " ];
$part = substr ( $content , 0 , 400 );
// 循环输出每条数据
echo ' <div class="index_side">
<div class="index_title"> ' . $title . ' </div>
<div class="index_content"> ' . $part . ' </div>
<div class="index_button">
<a href="#">update</a> <a href="#">delet</a>
</div>
</div> ' ;
}
}
$pageSupport -> standard_navigate(); // 调用类里面的这个函数,显示出分页HTML
//关闭数据库
mysql_close ( $con );
?>
</ div >