Oracle分页函数类

//    ※page_standard()                分页显示函数(标准型)
//    ※GetRecordStartEnd()            获得取记录的开始结束位置        
//    ※getmaxpage()                    获得记录集的最大页数
//    ※checkpage()                    检查当前页数是否在0和最大页数之间
//    ※ShowRecordSet()                两维表格显示函数(调试程序之用)
//------------------------------------------------------------------------------------------


class c_ora_page
{
    
//------------------------------------------------------------------------------------------
//        变量定义
//------------------------------------------------------------------------------------------    
    
var $I_pagesize            10 ;        //每页记录数
    
var $c_width            "90%"    ;    //表格宽度   
//------------------------------------------------------------------------------------------    


//------------------------------------------------------------------------------------------
//        函数名:page_standard($I_sumrecord,$C_page,$C_url="self",$C_otherpara="")
//        作  用:分页显示函数(标准型)
//        参  数:$I_sumrecord        记录总数
//                $C_url                URL
//                $C_page                URL后的参数
//                $C_otherpara        URL后的参数2
//                $bgcolor            表格的背景颜色
//        返回值:<table>
//        备  注:无
//------------------------------------------------------------------------------------------
    
function page_standard($I_sumrecord,$C_page,$C_url="self",$C_otherpara="",$bgcolor="")
    {
        
//检查参数
        
if ((!$I_sumrecord) || (!$C_page)){AlertExit("参数不全!");}
        
        global 
$PHP_SELF,$$C_page;                            //全局变量$C_page
        
        //检测$I_pagesize是否合法
        
if($this -> I_pagesize 1){AlertExit("请设定每页的记录数!");}
        
        if(
$I_sumrecord 1){return false;}                        //检测总记录数
        
        
if($C_url == "self"){$C_url $PHP_SELF;}                //设置URL
        
        
$I_page = $$C_page;                                        //重新赋当前页值
        
$I_maxpage $this -> getmaxpage($I_sumrecord);            //取出总页数
        
$I_page $this -> checkPage($I_maxpage,$I_page);        //检查当前页号
                
        //显示表 
        
echo "<table align=center width="$this -> c_width ." bgcolor="$bgcolor .">";
        echo 
"<tr>";
        echo 
"<td align=left>共<font color=red><b>" $I_sumrecord"</b></font>条主题&nbsp当前第<font color=red><b>" $I_page "/"$I_maxpage"</b></font>页</td>";
        if (
$I_maxpage 1)
        {
            echo 
"<td align=right>";
            if(
$I_page && $I_page $I_maxpage)
            {
                echo 
"<a href= $C_url?$C_page=1&$C_otherpara>首页</a>&nbsp;";        
                
$pre=$I_page-1;
                echo 
"<a href=$C_url?$C_page=$pre&$C_otherpara>上页</a>&nbsp;";    
                
$next=$I_page+1;
                echo 
"<a href=$C_url?$C_page=$next&$C_otherpara>下页</a>&nbsp;";        
                echo 
"<a href=$C_url?$C_page=$I_maxpage&$C_otherpara>末页</a>&nbsp;&nbsp;";
            }
            elseif(
$I_page == 1)
            {
                
$next $I_page+1;
                echo 
"<a href=$C_url?$C_page=$next&$C_otherpara>下页</a>&nbsp;";    
                echo 
"<a href=$C_url?$C_page=$I_maxpage&$C_otherpara>末页</a>&nbsp;&nbsp;";    
            }
            elseif(
$I_page == $I_maxpage)
            {        
                echo 
"<a href=$C_url?$C_page=1&$C_otherpara>首页</a>&nbsp;";    
                
$pre=$I_page-1;
                echo 
"<a href=$C_url?$C_page=$pre&$C_otherpara>上页</a>&nbsp;&nbsp;";
            }
            
            
//显示select
            
echo "转到";
            echo 
"<SELECT style=font-size:9pt NAME=gopage class='ff' OnChange=".WindowLocation($C_url,$C_otherpara,$C_page).">";//OnChange=".WindowLocation($C_url,$C_otherpara,$C_page)."
            
for($i=1;$i <= $I_maxpage;$i++)
            {
                
//如$i==$I_page,此选项选中(selected)
                
if($i == $I_page){echo "<option value=$i selected>$i&nbsp;</option>";}
                else{echo 
"<option value=$i>$i&nbsp;</option>";}
            }
            echo 
"</SELECT>页</td>";
        }
        echo 
"</tr>";
        echo 
"</table>";
    }
//------------------------------------------------------------------------------------------


//------------------------------------------------------------------------------------------
//        函数名:GetRecordStartEnd($I_page)
//        作  用:获得取记录的开始结束位置
//        参  数:$I_page            当前页
//        返回值:全局变量$I_rowstart,$I_rowend
//        备  注:无
//------------------------------------------------------------------------------------------
    
function GetRecordStartEnd($I_page)
    {
        global 
$I_rowstart,$I_rowend;
        
$I_rowstart=($I_page-1)*$this -> I_pagesize;            
        
$I_rowend=$I_rowstart+$this -> I_pagesize;
    }
//------------------------------------------------------------------------------------------


//------------------------------------------------------------------------------------------
//        函数名:getmaxpage($intRecordNum)
//        作  用:获得记录集的最大页数
//        参  数:$I_sumrecord        记录总数
//        返回值:最大页数$I_maxpage(整型)
//        备  注:无
//------------------------------------------------------------------------------------------
    
function getmaxpage($I_sumrecord)
    {
        if (!
$I_sumrecord){AlertExit("参数不全!");}//检查参数
        
$I_maxpage ceil($I_sumrecord $this -> I_pagesize); 
        return 
$I_maxpage;
    }
//------------------------------------------------------------------------------------------


//------------------------------------------------------------------------------------------
//        函数名:checkpage($I_maxpage,$I_page)
//        作  用:检查当前页数是否在0和最大页数之间
//        参  数:$I_maxpage        最大页数
//                $I_page            当前页数
//        返回值:当前页数$I_page(整型)
//        备  注:无
//------------------------------------------------------------------------------------------
    
function checkpage($I_maxpage,$I_page)
    {
        if(
$I_maxpage==0){$I_page=$I_maxpage;return $I_page;}
        if (
$I_page<1){$I_page=1;}
        if(
$I_page>$I_maxpage){    $I_page=$I_maxpage;    }
        return 
$I_page;
    }
//------------------------------------------------------------------------------------------

//------------------------------------------------------------------------------------------
//        函数名:ShowRecordSet($RecordSet,$Header,$width="100%")    
//        作  用:两维表格显示函数(调试程序之用)
//        参  数:$RecordSet            记录集
//                $Header                表头
//                $width                表宽
//        返回值:table
//        备  注:无
//-----------------------------------------------------------------------------------------
    
function ShowRecordSet($RecordSet,$Header,$width="100%")
    {
        echo 
"<TABLE align=center border=1 width=$width>";
        echo 
"<tr bgcolor=#A4A4D2>";
        for(
$i=0;$i<count($Header);$i++){
            echo 
"<td align=center>$Header[$i]</td>";
        }
        echo 
"</tr>";
        for(
$i=0;$i<count($RecordSet);$i++){    
            if(
$i%2==0){
                echo 
"<tr bgcolor=#cccccc>";
            }
            else{
                echo 
"<tr bgcolor=#F5F5FE>";
            }
            
$arr_cur=$RecordSet[$i];
            for(
$j=0;$j<count($Header);$j++)
            {
                echo 
"<td align=center>".ReplaceSpecialChar($arr_cur[$j])."</td>";
            }
            echo 
"</tr>";
        }
        echo 
"</table>";
    }
//--------------------------------------------------------------------------------------


//--------------------------------------------------------------------------------------
}
?>