封装php+mysql分页类

封装的类:

<?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>&nbsp;&nbsp;&nbsp;<a href="#">delet</a>
</div>
</div>
';
}
}
$pageSupport->standard_navigate(); //调用类里面的这个函数,显示出分页HTML
//关闭数据库

mysql_close($con);
?>
</div>

 

posted on 2010-09-19 21:28  lovening  阅读(6045)  评论(1编辑  收藏  举报