php分页实现方法

实现要求:将得到的检索结果,以每页20条记录输出到客户端。(每次输出的上限为20)

实现方法:

  • 服务器端

             例:实现检索方法,方便客户端调用。  返回$result(20条记录) 

            $pagingmin = ($page_id-1* 20;//根据客户端传回的page_id确定需要输出的记录id最小值
        
$pagingmax = $page_id * 20;//根据客户端传回的page_id确定需要输出的记录id最大值

function  doOrderInfoSearch( $page_id ){
        
global   $db ;
        
$nowdate   =  getNowDateYYYYMMDD();

        
$SQL   =   " SELECT c.ORDER_ID,  " .
            
" c.CREATE_DATE,  " .
            
" c.ORDER_FIRST_NAME,  " .
            
" c.ORDER_LAST_NAME,  " .
            
" c.ORDER_ADDRESS,  " .
            
" c.PAYMENT_METHOD_ID,  " .
            
" SUM(a.PRODUCT_COUNT*b.PRODUCT_PRICE) AS amount,  " .
            
" c.ACTUAL_SEND_DATE  " .
            
" FROM order_product_tbl a, product_master b,order_master c  " .
            
" WHERE TRUE  " ;
        
        
if ( $this -> create_date  <>   "" ) $SQL   .=    "  and c.CREATE_DATE='$this->create_date' " ;
        
if ( $this -> delivery_date  <>   "" ) $SQL   .=    "  and c.DELIVERY_DATE='$this->delivery_date' " ;
        
        
if ( $this -> delivery_flag  ==  DELIVERY_STATE_ALL) $SQL   .=   "" ;
        
if ( $this -> delivery_flag  ==  DELIVERY_STATE_UNDO) $SQL   .=   "  and c.ACTUAL_SEND_DATE > $nowdate " ;
        
if ( $this -> delivery_flag  ==  DELIVERY_STATE_DOWN) $SQL   .=   "  and c.ACTUAL_SEND_DATE < $nowdate " ;
        
        
if ( $this -> order_status  ==  ORDER_STATUS_ALL) $SQL   .=    "" ;
        
if ( $this -> order_status  ==  ORDER_STATUS_COMMON) $SQL   .=    "  and c.ORDER_STATUS= " . ORDER_STATUS_COMMON;
        
if ( $this -> order_status  ==  ORDER_STATUS_CANCEL) $SQL   .=    "  and c.ORDER_STATUS= " . ORDER_STATUS_CANCEL;
        
        
if ( $this -> payment_flag  ==  PAYMENT_FLAG_ALL) $SQL   .=    "" ;
        
if ( $this -> payment_flag  ==  PAYMENT_FLAG_COMMON) $SQL   .=    "  and c.PAYMENT_FLAG= " . PAYMENT_FLAG_COMMON;
        
if ( $this -> payment_flag  ==  PAYMENT_FLAG_CANCEL) $SQL   .=    "  and c.PAYMENT_FLAG= " . PAYMENT_FLAG_CANCEL;
        
        
$SQL .= "  and a.PRODUCT_ID=b.PRODUCT_ID and a.ORDER_ID = c.ORDER_ID group by c.ORDER_ID " ;
        
$rs = $db -> query( $SQL );
        
$pagingmin   =  ( $page_id - 1 *   20 ;
        
$pagingmax   =   $page_id   *   20 ;
        
$result   =   array ();
        
if  (( !  DB :: isError( $rs ))) {
            
$cntIndex   =   0 ;
            
$rowIndex   =   0 ;
            
while  ( $row   =   $rs -> fetchRow()){
                
if ( $rowIndex   >=   $pagingmin   &&   $rowIndex   <   $pagingmax ){
                    
$row   =  Common_record( $row );
                    
$result [ $cntIndex =   $this -> getRecord( $row );
                    
$cntIndex ++ ;
                }
                
$rowIndex ++ ;
            }
            
$this -> pagenum  =   ceil ( $rs -> numRows() / 20 );//将总计页数输出到客户端为生成页码序列提供初始值
            
return   $result ;
            
        }
        
    }

 

  • 客户端

        1调用doOrderInfoSearch($page_id)将返回值显示到<table>中即可。

       2 生成页码序列方法:将<div id='setpage'></div>写入htm

< script type = " text/javascript " >  
<!--  
var  totalpage,pagesize,cpage,count,curcount,outstr; 
// 初期化pageNum 
cpage  =   <?= $page_id ?>
totalpage 
=   <?= $searchcase -> pagenum ?>
pagesize 
=   10
outstr 
=   ""
function  gotopage(target) 
{     
    cpage 
= target;    
    doSubmitWithModeAndPage(
'page.php?id=19','DO_SEARCH',cpage);

}
 
function  setpage() 

    
if(totalpage<=10)
        
for (count=1;count<=totalpage;count++
        
{    if(count!=cpage) 
            

                outstr 
= outstr + "<a href='#' οnclick='gotopage("+count+")'>"+count+"</a>"
            }
else
                outstr 
= outstr + "<span class='current' >"+count+"</span>"
            }
 
        }
 
    }
 
    
if(totalpage>10){
        
if(parseInt((cpage-1)/10== 0
        
{             
            
for (count=1;count<=10;count++
            
{    if(count!=cpage) 
                

                    outstr 
= outstr + "<a href='javascript:void(0)' οnclick='gotopage("+count+")'>"+count+"</a>"
                }
else
                    outstr 
= outstr + "<span class='current'>"+count+"</span>"
                }
 
            }
 
            outstr 
= outstr + "<a href='javascript:void(0)' οnclick='gotopage("+count+")'> next </a>"
        }
 
        
else if(parseInt((cpage-1)/10== parseInt(totalpage/10)) 
        
{     
            outstr 
= outstr + "<a href='javascript:void(0)' οnclick='gotopage("+(parseInt((cpage-1)/10)*10)+")'>previous</a>"
            
for (count=parseInt(totalpage/10)*10+1;count<=totalpage;count++
            
{    if(count!=cpage) 
                

                    outstr 
= outstr + "<a href='javascript:void(0)' οnclick='gotopage("+count+")'>"+count+"</a>"
                }
else
                    outstr 
= outstr + "<span class='current'>"+count+"</span>"
                }
 
            }
 
        }
 
        
else 
        
{     
            outstr 
= outstr + "<a href='javascript:void(0)' οnclick='gotopage("+(parseInt((cpage-1)/10)*10)+")'>previous</a>"
            
for (count=parseInt((cpage-1)/10)*10+1;count<=parseInt((cpage-1)/10)*10+10;count++
            
{         
                
if(count!=cpage) 
                

                    outstr 
= outstr + "<a href='javascript:void(0)' οnclick='gotopage("+count+")'>"+count+"</a>"
                }
else
                    outstr 
= outstr + "<span class='current'>"+count+"</span>"
                }
 
            }
 
            outstr 
= outstr + "<a href='javascript:void(0)' οnclick='gotopage("+count+")'> next </a>"
        }
 
    }
     
    document.getElementById(
"setpage").innerHTML = "<div id='setpage'><span id='info'> Total "+totalpage+" Page | Page "+cpage+"</span>" + outstr + "</div>"
    outstr 
= ""
}
 
// --> 
</ script >  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值