分页显示
时间:2006-12-24 来源:gewanhong
class PAGE
{
//---------------设置分页的GET变量---------------------
//--这两处参数是程序自动加上的,顺序为"$Page_Rows=90&ActionPage=12"
var $Aget='AP'; //当前页参数
var $Pget='PR'; //每页显示数
var $PR_str; //处理中间值,请不要修改
var $AP_str; //处理中间值,请不要修改
var $show_all_num = true; //是否显示所有项
var $show_page_num = true; //是否显示页数
var $show_show_num = true; //是否显示分页可选项
var $show_num_mode = 'NUM'; //每页显示数操作字符串显示方式 'NUM':数字 'LIST':下拉列表
var $RecordNum; //总的记录数
var $page_count; //页总数
var $show_num_string = ''; //每页显示数操作字符串
var $cross_page_string = '';//显示翻页操作字符串
var $sel_page_string = ''; //下拉选择对应页操作字符串
var $Query; //暂时保存修改后的SQL语句,用于查询结果集
var $Link_id; //暂时保存MySQL连接句柄,用于查询结果集
var $select_ay=array(10,20);//可选择的每页显示数,默认为10项
var $conchar=array('first' => '9', //首页
'up' => '7', //上一页
'down' => '8', //下一页
'last' => ':');//尾页
//--类构造函数
//--$char_ay :自定义显示的内容,可用图片,为空则使用默认的字符显示
function PAGE( $char_ay = '' )
{
$this->PR_str = "&{$this->Pget}=";
$this->AP_str = "&{$this->Aget}=";
if( is_array($char_ay) )
{
$this->conchar['first'] = $char_ay[0];
$this->conchar['up'] = $char_ay[1];
$this->conchar['down'] = $char_ay[2];
$this->conchar['last'] = $char_ay[3];
}
}
//--设置返分页字符串的显示部分
//--$all_num:是否显示所有项 $page_num:是否显示页数 $show_num:是否显示分页可选项
function set_show( $all_num=true, $page_num=true, $show_num=true)
{
$this->show_all_num = $all_num;
$this->show_page_num = $page_num;
$this->show_show_num = $show_num;
}
//--每页显示数操作字符串显示方式 'NUM':数字 'LIST':下拉列表
function set_show_mode( $mode='NUM' )
{
$this->show_num_mode = $mode;
}
//--生成分页功能的字符串返回它
//--$QuerySql:查询的select语句,地址方式传递,进处理后会加上limit语句
//--$sql_link:数据库连接句柄
//--$select_ay:可选的每页显示数,一维数组如:array(5,10)
function make_page(&$QuerySql, $sql_link, $select_ay='')
{
if( $QuerySql == '' || !$sql_link ) return '';
if( is_array($select_ay) ) $this->select_ay = $select_ay;
//---------------得到记录总数-------------------------
$res=@mysql_query($QuerySql,$sql_link);
$this->RecordNum=@mysql_num_rows($res);
@mysql_free_result($res);
//---------------得到每页显示数和当前显示的页数---------
$page = $_GET[$this->Aget]=='' ? 1 : $_GET[$this->Aget];
$page_rows = $_GET[$this->Pget]=='' ? $this->select_ay[0] : $_GET[$this->Pget];
//---------------得到设置后的总页数-----------------------
if($this->RecordNum > 0 )
{
if($this->RecordNum $page_rows ) $this->page_count = 1;
else if($this->RecordNum %$page_rows ) $this->page_count = (int)($this->RecordNum/$page_rows) + 1;
else $this->page_count = $this->RecordNum / $page_rows;
}else{
$this->page_count = 0;
}
//---------------处理分页时的参数-------------------------
$getval='?';
$str=$_SERVER["QUERY_STRING"]; //得到URL'?'后的字符串
if($str != "")
{
$tmp_str=strstr($str,$this->Pget); //得到分页参数字符串
if( $tmp_str != '' ) //加了分页参数
{
$getval .= str_replace($tmp_str,'',$str); //去除分面参数
}else $getval .= $str;
}
if( $getval[strlen($getval)-1] == '&' ){ //去掉最后的字符'&'
$getval=substr($getval,0,strlen($getval)-1);
}
//-------------改变SQL语句--------------------------------
$QuerySql .= " limit ".($page-1)*$page_rows .", $page_rows";
$this->Query = $QuerySql;
$this->Link_id = $sql_link;
$page_string = '';
//-------------生成记录项和页数---------------------------
if( $this->show_all_num )
$page_string .='所有 '.$this->RecordNum.'项,';
if( $this->show_page_num )
$page_string .='共 '.$this->page_count.'页,';
//_____________生成可选的每页数连接-------------------------
if( $this->show_show_num )
{
if( $this->show_num_mode == 'NUM' )
{
//--------以数字方式显示
$page_string .= '每页显示 ';
foreach($this->select_ay as $val)
{
$value = $_SERVER['PHP_SELF'].$getval.$this->PR_str.$val; //改变每页显示数是不加分页数
if($getval == '?') $value=str_replace('?&','?',$value);
if( $val == $page_rows )
$this->show_num_string .= '['.$val.'] ';
else $this->show_num_string .= '.$value.'" title="更改每页显示为'.$val.'项">'.$val.' ';
}
$page_string .= $this->show_num_string;
$page_string .= '项 ';
}else{
//--------以下拉列表方式显示
$page_string .= '每页显示';
$this->show_num_string .=" \n\r";
foreach($this->select_ay as $val)
{
$value = $_SERVER['PHP_SELF'].$getval.$this->PR_str.$val; //改变每页显示数是不加分页数
if($getval == '?') $value=str_replace('?&','?',$value);
if( $val == $page_rows )
$this->show_num_string .='.$value.'" selected="selected">'."{$val}\n";
else $this->show_num_string .='.$value.'">'."{$val}\n";
}
$this->show_num_string .= '';
$page_string .= $this->show_num_string;
$page_string .= '项 ';
}
}
//-------------生成翻页链接-------------------------------
$value=$_SERVER['PHP_SELF'].$getval.$this->PR_str.$page_rows.$this->AP_str;
if($getval == '?') $value=str_replace('?&','?',$value);
if( $page == 1 )
$this->cross_page_string .= $this->conchar['first'].' '.$this->conchar['up'].' ';
else {
$this->cross_page_string .= '.$value.'1" title="首页">'.$this->conchar['first'].' ';
$this->cross_page_string .= '.$value.($page-1).'" title="上一页">'.$this->conchar['up'].' ';
}
if( ($page == $this->page_count) || ($this->page_count == 0) ) //--显示最后一页
{
$this->cross_page_string .= $this->conchar['down'].' '.$this->conchar['last'].' ';
}else{
$this->cross_page_string .= '.$value.($page+1).'" title="下一页">'.$this->conchar['down'].' ';
$this->cross_page_string .= '.$value.$this->page_count.'" title="尾页">'.$this->conchar['last'].' ';
}
$page_string .= $this->cross_page_string;
//-----------生成可选分页数---------------------------------
$page_string .="转到";
$this->sel_page_string .= " \n\r";
for($i=1; $i$this->page_count; $i++)
{
if($i == $page)
$this->sel_page_string .= '.$value.$i.'" selected="selected">'."第{$i}页\n";
else $this->sel_page_string .= '.$value.$i.'">'."第{$i}页\n";
}
$this->sel_page_string .= '';
$page_string .= $this->sel_page_string;
return $page_string;
}
//--返回结果集二级数组
function record_fetch()
{
$ay = array();
$res = @mysql_query($this->Query, $this->Link_id);
while($row = @mysql_fetch_array($res))
{
$ay[] = $row;
}
@mysql_free_result($res);
return $ay;
}
//--返回记录数
function record_num()
{
return $this->RecordNum;
}
//--返回总页数
function page_count()
{
return $this->page_count;
}
//--返回每页显示数操作字符串
function show_num_string()
{
return $this->show_num_string;
}
//--返回显示翻页操作字符串
function cross_page_string()
{
return $this->cross_page_string;
}
//--返回下拉选择对应页操作字符串
function sel_page_string()
{
return $this->sel_page_string;
}
}//End Class
$sql_link=mysql_connect("localhost","root","root");
mysql_select_db("elearning2");
$query='select * from users';
$page = new PAGE;
$page->set_show_mode('LIST'); // 'NUM' or 'LIST'
$pagestr=$page->make_page($query,$sql_link,array(1,2,3,4,5));
//--其它处理
mysql_query($query,$sql_link);
echo $pagestr;
echo '';
echo '每页显示:'.$page->show_num_string();
echo '';
echo '选择翻页(可自定义为图片):'.$page->cross_page_string();
echo '';
echo '当前:'.$page->sel_page_string();
echo '';
{
//---------------设置分页的GET变量---------------------
//--这两处参数是程序自动加上的,顺序为"$Page_Rows=90&ActionPage=12"
var $Aget='AP'; //当前页参数
var $Pget='PR'; //每页显示数
var $PR_str; //处理中间值,请不要修改
var $AP_str; //处理中间值,请不要修改
var $show_all_num = true; //是否显示所有项
var $show_page_num = true; //是否显示页数
var $show_show_num = true; //是否显示分页可选项
var $show_num_mode = 'NUM'; //每页显示数操作字符串显示方式 'NUM':数字 'LIST':下拉列表
var $RecordNum; //总的记录数
var $page_count; //页总数
var $show_num_string = ''; //每页显示数操作字符串
var $cross_page_string = '';//显示翻页操作字符串
var $sel_page_string = ''; //下拉选择对应页操作字符串
var $Query; //暂时保存修改后的SQL语句,用于查询结果集
var $Link_id; //暂时保存MySQL连接句柄,用于查询结果集
var $select_ay=array(10,20);//可选择的每页显示数,默认为10项
var $conchar=array('first' => '9', //首页
'up' => '7', //上一页
'down' => '8', //下一页
'last' => ':');//尾页
//--类构造函数
//--$char_ay :自定义显示的内容,可用图片,为空则使用默认的字符显示
function PAGE( $char_ay = '' )
{
$this->PR_str = "&{$this->Pget}=";
$this->AP_str = "&{$this->Aget}=";
if( is_array($char_ay) )
{
$this->conchar['first'] = $char_ay[0];
$this->conchar['up'] = $char_ay[1];
$this->conchar['down'] = $char_ay[2];
$this->conchar['last'] = $char_ay[3];
}
}
//--设置返分页字符串的显示部分
//--$all_num:是否显示所有项 $page_num:是否显示页数 $show_num:是否显示分页可选项
function set_show( $all_num=true, $page_num=true, $show_num=true)
{
$this->show_all_num = $all_num;
$this->show_page_num = $page_num;
$this->show_show_num = $show_num;
}
//--每页显示数操作字符串显示方式 'NUM':数字 'LIST':下拉列表
function set_show_mode( $mode='NUM' )
{
$this->show_num_mode = $mode;
}
//--生成分页功能的字符串返回它
//--$QuerySql:查询的select语句,地址方式传递,进处理后会加上limit语句
//--$sql_link:数据库连接句柄
//--$select_ay:可选的每页显示数,一维数组如:array(5,10)
function make_page(&$QuerySql, $sql_link, $select_ay='')
{
if( $QuerySql == '' || !$sql_link ) return '';
if( is_array($select_ay) ) $this->select_ay = $select_ay;
//---------------得到记录总数-------------------------
$res=@mysql_query($QuerySql,$sql_link);
$this->RecordNum=@mysql_num_rows($res);
@mysql_free_result($res);
//---------------得到每页显示数和当前显示的页数---------
$page = $_GET[$this->Aget]=='' ? 1 : $_GET[$this->Aget];
$page_rows = $_GET[$this->Pget]=='' ? $this->select_ay[0] : $_GET[$this->Pget];
//---------------得到设置后的总页数-----------------------
if($this->RecordNum > 0 )
{
if($this->RecordNum $page_rows ) $this->page_count = 1;
else if($this->RecordNum %$page_rows ) $this->page_count = (int)($this->RecordNum/$page_rows) + 1;
else $this->page_count = $this->RecordNum / $page_rows;
}else{
$this->page_count = 0;
}
//---------------处理分页时的参数-------------------------
$getval='?';
$str=$_SERVER["QUERY_STRING"]; //得到URL'?'后的字符串
if($str != "")
{
$tmp_str=strstr($str,$this->Pget); //得到分页参数字符串
if( $tmp_str != '' ) //加了分页参数
{
$getval .= str_replace($tmp_str,'',$str); //去除分面参数
}else $getval .= $str;
}
if( $getval[strlen($getval)-1] == '&' ){ //去掉最后的字符'&'
$getval=substr($getval,0,strlen($getval)-1);
}
//-------------改变SQL语句--------------------------------
$QuerySql .= " limit ".($page-1)*$page_rows .", $page_rows";
$this->Query = $QuerySql;
$this->Link_id = $sql_link;
$page_string = '';
//-------------生成记录项和页数---------------------------
if( $this->show_all_num )
$page_string .='所有 '.$this->RecordNum.'项,';
if( $this->show_page_num )
$page_string .='共 '.$this->page_count.'页,';
//_____________生成可选的每页数连接-------------------------
if( $this->show_show_num )
{
if( $this->show_num_mode == 'NUM' )
{
//--------以数字方式显示
$page_string .= '每页显示 ';
foreach($this->select_ay as $val)
{
$value = $_SERVER['PHP_SELF'].$getval.$this->PR_str.$val; //改变每页显示数是不加分页数
if($getval == '?') $value=str_replace('?&','?',$value);
if( $val == $page_rows )
$this->show_num_string .= '['.$val.'] ';
else $this->show_num_string .= '.$value.'" title="更改每页显示为'.$val.'项">'.$val.' ';
}
$page_string .= $this->show_num_string;
$page_string .= '项 ';
}else{
//--------以下拉列表方式显示
$page_string .= '每页显示';
$this->show_num_string .=" \n\r";
foreach($this->select_ay as $val)
{
$value = $_SERVER['PHP_SELF'].$getval.$this->PR_str.$val; //改变每页显示数是不加分页数
if($getval == '?') $value=str_replace('?&','?',$value);
if( $val == $page_rows )
$this->show_num_string .='.$value.'" selected="selected">'."{$val}\n";
else $this->show_num_string .='.$value.'">'."{$val}\n";
}
$this->show_num_string .= '';
$page_string .= $this->show_num_string;
$page_string .= '项 ';
}
}
//-------------生成翻页链接-------------------------------
$value=$_SERVER['PHP_SELF'].$getval.$this->PR_str.$page_rows.$this->AP_str;
if($getval == '?') $value=str_replace('?&','?',$value);
if( $page == 1 )
$this->cross_page_string .= $this->conchar['first'].' '.$this->conchar['up'].' ';
else {
$this->cross_page_string .= '.$value.'1" title="首页">'.$this->conchar['first'].' ';
$this->cross_page_string .= '.$value.($page-1).'" title="上一页">'.$this->conchar['up'].' ';
}
if( ($page == $this->page_count) || ($this->page_count == 0) ) //--显示最后一页
{
$this->cross_page_string .= $this->conchar['down'].' '.$this->conchar['last'].' ';
}else{
$this->cross_page_string .= '.$value.($page+1).'" title="下一页">'.$this->conchar['down'].' ';
$this->cross_page_string .= '.$value.$this->page_count.'" title="尾页">'.$this->conchar['last'].' ';
}
$page_string .= $this->cross_page_string;
//-----------生成可选分页数---------------------------------
$page_string .="转到";
$this->sel_page_string .= " \n\r";
for($i=1; $i$this->page_count; $i++)
{
if($i == $page)
$this->sel_page_string .= '.$value.$i.'" selected="selected">'."第{$i}页\n";
else $this->sel_page_string .= '.$value.$i.'">'."第{$i}页\n";
}
$this->sel_page_string .= '';
$page_string .= $this->sel_page_string;
return $page_string;
}
//--返回结果集二级数组
function record_fetch()
{
$ay = array();
$res = @mysql_query($this->Query, $this->Link_id);
while($row = @mysql_fetch_array($res))
{
$ay[] = $row;
}
@mysql_free_result($res);
return $ay;
}
//--返回记录数
function record_num()
{
return $this->RecordNum;
}
//--返回总页数
function page_count()
{
return $this->page_count;
}
//--返回每页显示数操作字符串
function show_num_string()
{
return $this->show_num_string;
}
//--返回显示翻页操作字符串
function cross_page_string()
{
return $this->cross_page_string;
}
//--返回下拉选择对应页操作字符串
function sel_page_string()
{
return $this->sel_page_string;
}
}//End Class
$sql_link=mysql_connect("localhost","root","root");
mysql_select_db("elearning2");
$query='select * from users';
$page = new PAGE;
$page->set_show_mode('LIST'); // 'NUM' or 'LIST'
$pagestr=$page->make_page($query,$sql_link,array(1,2,3,4,5));
//--其它处理
mysql_query($query,$sql_link);
echo $pagestr;
echo '';
echo '每页显示:'.$page->show_num_string();
echo '';
echo '选择翻页(可自定义为图片):'.$page->cross_page_string();
echo '';
echo '当前:'.$page->sel_page_string();
echo '';
相关阅读 更多 +
排行榜 更多 +