按天分表后查询分页(查询表计算方法)

来源:互联网 发布:软件中的冒烟测试 编辑:程序博客网 时间:2024/06/05 10:45

/**
* 分页计算方法
* @param totalNumtotalNum 要求格式Array ( [0] => Array ( [0] => 20170922 [1] => 28 ) [1] => Array ( [0] => 20170921 [1] => 1 ) [2] => Array ( [0] => 20170920 [1] => 11 ) )
* @param $page 当前第几页
* @return array
*/

 private function tableCount( $totalNum,$page){     $prevNum = ($page-1) * 15; //之前页面条数     $nowNum = $i = 0;     $resArr = array();    $arrNum = count($totalNum); foreach($totalNum as $key => $value){                $nowNum += $value[1]; //当前总条数                //大于上页数据则为当前页需要显示数据                if($nowNum > $prevNum){                        if($resArr){                                $alyNum = 0;                                foreach($resArr as $k => $v){                                        $nArr = explode(",",$v['nums']);                                        $alyNum += $nArr[1];                                }                                $offset = $value[1]-($nowNum - $prevNum)+$alyNum;                                $pagesize = ((15-$alyNum) < $value[1]) ? (15-$alyNum) : $value[1];                }else{                                $offset = $value[1]-($nowNum - $prevNum);                                $pagesize = ($nowNum - $prevNum > 15) ? 15 : ($nowNum - $prevNum);             }               $resArr[$key]['dates'] = $value[0];                        $resArr[$key]['nums'] = $offset.",".$pagesize;                    }                    $i++; //满足最后一页查询不足15条                    //足够当前页显示则返回                    if($pagesize == 15 || $i == $arrNum){                            return $resArr;                    }        }}

返回格式(跨表后会有多个值):

Array(    [0] => Array        (            [dates] => 20170922  //表名            [nums] => 0,15  //$offset,$pagesize        ))

网上也是看了徐版主的思路写的,下边附上徐版主的思路截图,网上还有很多说利用union和关联表查询的方法,感觉这些方法会很慢,而且当查询的表多了sql也不美观 , 直接放弃了
这里写图片描述
欢迎各位大牛指正或交流更好的实现方法

原创粉丝点击