分表分页时查询用到的limit

/**
 * 返回这次查询要用的分页 和 下次用的分页
 * $offset 第几个值开始
 * $limit 要取多少个
 * $pre_num 先查出当前表的个数
 * return array(array(第几个,要取的个数),array(下次要从几开始取取的,要取的个数))
 * 如果返回array(array( 第几个,要取的个数 ) ,array( 0 , 0 )); 表示这次取完就结束
 */
final public function offset_limit ( $offset , $limit , $pre_num )
{

    //echo  '<font color="red">'.$offset .' '.$limit.' '.$pre_num.'</font><br>';

    if ( $limit == 0 ) {
        return
            array(
                array( 0 , 0 ) ,
                array( 0 , 0 )
            );
    }

    if ( $offset === 0 ) {

        if ( $pre_num > $limit ) {
            return
                array(
                    array( 0 , $limit ) ,
                    array( 0 , 0 )
                );
        }

    }

    if ( $offset == $pre_num ) {
        return
            array(
                array( 0 , 0 ) ,
                array( 0 , $limit )
            );
    }


    if ( $pre_num < $offset ) {
        return
            array(
                array( 0 , 0 ) ,
                array( $offset - $pre_num , $limit )
            );
    }

    $sum = $offset + $limit;
    if ( $pre_num > $sum ) {
        return
            array(
                array( $offset , $limit ) ,
                array( 0 , 0 )
            );
    }


    if ( $pre_num > $offset ) {
        return
            array(
                array( $offset , $pre_num - $offset ) ,
                array( 0 , $limit - ( $pre_num - $offset ) )
            );
    }


}
阅读更多
个人分类: php db
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭