PHP 使用 Oracle 分页方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP 使用 Oracle 分页方法相关的知识,希望对你有一定的参考价值。

/*

$sql: SQL 语句

$pagedir : 分页点击跳转地址

$page 当前页

$count 数据总数

$pagesize 每页显示条数

*/

function page( $sql, $pagedir, $page = 1, $count, $pagesize= 10) {
        $pagecode     = ‘‘;
        
        $page         = intval($page);                
        $count         = intval($count);            
        if ( !$count) return ‘‘;
        $pagecount     = ceil( $count/ $pagesize );
        
        if( $page < 1 ) $page = 1;
        if( $page > $pagecount ) $page = $pagecount;
        
        $pageStart     = $pagesize * ($page-1) + 1;
        $pageEnd     = $pagesize * $page ;
        if ($pageEnd > $count) {$pageEnd = $count;}
        
        //$pagecode =     "<a href=\"$pagedir&page=1\"><img src=\"../themes/Sugar/images/left2.png\" align=\"absmiddle\" border=\"0\" alt=\"Start\" /></a>";
        
        if ( $page == 1 || empty( $page) ) {
            $pagecode = "<button type=\"button\" id=\"popupViewStartButton\" title=\"Start\" class=\"button\" disabled=\"\">
                                    <span align=\"absmiddle\" border=\"0\" class=\"spr_60e88c7c4bc21ade9c3010b6abcdc0fd\" title=\"Start\"></span>
                                </button><button type=\"button\" id=\"popupViewPrevButton\" class=\"button\" disabled=\"\" title=\"Previous\">
                                    <span align=\"absmiddle\" border=\"0\" class=\"spr_85ff471105a04f2dd1f76dd22206dd14\" title=\"Previous\"></span>
                                </button>";
        } else {
            
            $pagecode = "<button type=\"button\" id=\"popupViewStartButton\" title=\"Start\" class=\"button\" onclick=\"location.href=‘{$pagedir}&page=1‘\">
                                    <span align=\"absmiddle\" border=\"0\" class=\"spr_e6223c471f8cf9df579462569fa9306c\" title=\"Start\"></span>
                                </button>";
            if ( $page > 1 ) $PreviousPage = $page -1; else $PreviousPage = 1;
            
            //$pagecode .= "<a href=\"$pagedir&page=$PreviousPage\"><img src=\"../themes/Sugar/images/left1.png\" align=\"absmiddle\" border=\"0\" alt=\"Previous\" /></a>";
            $pagecode .="<button type=\"button\" id=\"popupViewPrevButton\" title=\"Previous\" class=\"button\" onclick=\"location.href=‘{$pagedir}&page={$PreviousPage}‘\">
                        <span align=\"absmiddle\" border=\"0\" class=\"spr_a6fa65259296aaa5b94ded054464cf68\" title=\"Previous\"></span></button>";
        }
    
        //$pagecode .= "<span class=\"pageNumbers\">($pageStart - $pageEnd of $count)</span>";
        if ( $page < $pagecount ) $NextPage = $page + 1; else $NextPage = $pagecount;
        
        
        if ( $pagecount == $page ) {
            $pagecode .= "<span class=\"pageNumbers\">($pageStart - $pageEnd of $count)</span>";
            $pagecode .="<button type=\"button\" id=\"popupViewNextButton\" class=\"button\" title=\"Next\" disabled=\"\">
            <span align=\"absmiddle\" border=\"0\" class=\"spr_9c82366f2d3d35c243dd91706811b036\" title=\"Next\"></span>
            </button>
            <button type=\"button\" id=\"popupViewEndButton\" class=\"button\" disabled=\"\" title=\"End\">
            <span align=\"absmiddle\" border=\"0\" class=\"spr_17b56a3610caf7a7ad1aa7da7a984801\" title=\"End\"></span>
            </button>";
        } else {
            $pagecode .= "<span class=\"pageNumbers\">($pageStart - $pageEnd of {$pageEnd}+)</span>";
            $pagecode .= "<button type=\"button\" id=\"popupViewNextButton\" title=\"Next\" class=\"button\" onclick=\"location.href=‘{$pagedir}&page={$NextPage}‘\">
            <span align=\"absmiddle\" border=\"0\" class=\"spr_8770145eda4b0bf4f79175b595174ae2\" title=\"Next\"></span>
            </button>
            <button type=\"button\" id=\"popupViewEndButton\" title=\"End\" class=\"button\" onclick=\"location.href=‘{$pagedir}&page={$pagecount}‘\">
            <span align=\"absmiddle\" border=\"0\" class=\"spr_60d1e91e479a5648f0ca1a59e0f39c61\" title=\"End\"></span>
            </button>";
            //$pagecode .= "<a href=\"$pagedir&page=$NextPage\"><img src=\"../themes/Sugar/images/right1.png\" align=\"absmiddle\" border=\"0\"  alt=\"Next\" /></a>";
            //$pagecode .= "<a href=\"$pagedir&page=$pagecount\"><img src=\"../themes/Sugar/images/right2.png\"  align=\"absmiddle\" border=\"0\"  alt=\"End\" /></a>&nbsp;&nbsp;";
        }
        
        $result = array();
        $sql = str_replace( array( ‘{#pageStart#}‘, ‘{#pageEnd#}‘), array( $pageStart, $pageEnd), $sql);
        
        $result = $this->oracle->GetArray( $sql );
        return array( ‘pagecode‘=>$pagecode, ‘result‘=> $result, ‘pagecount‘=>$pagecount);
    }

 

调用示例如下:

 

$count = $this->oracle->GetOne("select count(1) from (
        SELECT DISTINCT C.ID FROM ACCOUNTS A
        LEFT JOIN ACCOUNTS_CSTM B ON ( A.ID = B.ID_C )
        LEFT JOIN CASES C ON ( C.ACCOUNT_ID = A.ID )
        LEFT JOIN CASES_CSTM CS ON ( C.ID = CS.ID_C )
        WHERE A.DELETED = 0 AND C.DELETED =0 AND  B.MG_INSERTDATE_C < TO_DATE(‘{$this->existing_date}‘, ‘{$this->time_format}‘ )
        AND B.MG_SUPPLIER_STATUS_C = ‘NON MSC‘
        AND CS.MG_CASE_ORIGIN_C = ‘eform_portal‘ $whereSQL ) tt ");
        
        $SQL = "SELECT DISTINCT C.ID , C.NAME NAME, A.NAME SUPPLIER_NAME, C.STATUS, CS.MG_CASE_SUBJTYPE_C CASE_SUBJECT_TYPE, TO_CHAR( C.DATE_ENTERED, ‘DD.MM.YYYY HH24:MI:SS‘) CREATE_DATE,
        TO_CHAR( CS.MG_CASE_DUE_DATE_C, ‘DD.MM.YYYY‘ ) DUE_DATE,
        (SELECT NAME FROM TEAMS WHERE DELETED = 0 AND ID =C.TEAM_ID ) TEAM_NAME  
        FROM ACCOUNTS A
        LEFT JOIN ACCOUNTS_CSTM B ON ( A.ID = B.ID_C )
        LEFT JOIN CASES C ON ( C.ACCOUNT_ID = A.ID )
        LEFT JOIN CASES_CSTM CS ON ( C.ID = CS.ID_C )
        WHERE A.DELETED = 0 AND C.DELETED =0 AND  B.MG_INSERTDATE_C < TO_DATE(‘{$this->existing_date}‘, ‘{$this->time_format}‘ )
        AND B.MG_SUPPLIER_STATUS_C = ‘NON MSC‘
        AND CS.MG_CASE_ORIGIN_C = ‘eform_portal‘ $whereSQL ";

$newSQL = "select * from ( select aa.*, rownum rn from ($SQL) aa where rownum <= {#pageEnd#} ) where rn >= {#pageStart#}";
        
$pagedir = "funnel_list.php?action=non_msc_cases_list&para=".$para;
$result = $this->pages( $newSQL, $pagedir, $_REQUEST[‘page‘], $count, 20);

 





















































以上是关于PHP 使用 Oracle 分页方法的主要内容,如果未能解决你的问题,请参考以下文章

使用 Oracle 进行分页

实现oracle分页---3种方法--

Oracle, SQL Server, My SQL如何实现数据分页查询语句

oracle怎么实现分页

Oracle数据库分页的三种方法

[转]Oracle分页之二:自定义web分页控件的封装