TP-SQL语句分页以及数组分页

PHP原生分页

/**
 * @param $sql
 * @param $page
 * @param $rows 2、定义每页的数据条数(5条)
 * @return array
 */
public function ma_sort($sql, $page, $rows){
    //$sql = "SELECT
    //  cr.id, cr.name, oi.cpu, oi.memory
    //FROM
    //  ma_member AS cr
    //LEFT JOIN (
    //  SELECT a.mid, a.cpu, a.memory, a.warning_status, a.create_time FROM ma_warning_log AS a where a.warning_status = 1  and warning_id = (select max(warning_id) from ma_warning_log as b where a.mid = b.mid)
    //) AS oi ON oi.mid = cr.id order by cpu desc";
    $data = Db::query($sql);

    /**
     * 1、查询数据总条数
     */
    $total = count($data);

    /**
     * 3、获取总页数(向上取整)
     */
    $pagesum = ceil($total/$rows);

    /**
     * 4、获取当前页(传值)
     */
    $page = $page < 1 ? 1 : $page;

    /**
     * 5、获取偏移量
     */
    $start = ($page-1)*$rows;

    /**
     * 6、查询每页数据
     */
    $sql = $sql." limit $start,$rows;";
    $data = Db::query($sql);

    /**
     * 7、拼接页码
     */
    $pre = $page-1 < 1 ? 1 : $page-1;
    $next = $page+1 > $pagesum ? $pagesum : $page+1;
    return ['pre' => $pre, 'next' => $next, 'total' => $total,'list' => $data];
}

数组分页

// 二维数组指定字段排序
$_name = array_column($list, $order_sort_array[0]);
array_multisort($_name, $order_sort, $list);
$getPageList = $this->ma_page($list, $page, $rows, $count);

/**
 * @param $list 二维数组数据集
 * @param $page 当前页数
 * @param $rows 每页展示的数量
 * @param $count 总数额
 * @return array
 */
public function ma_page($list, $page, $rows, $count){
    $page = $page < 1 ? 1 : $page;
    $start = ($page-1)*$rows;
    $pagesum = ceil($count/$rows);
    $list = array_slice($list, $start, $rows);
    $pre = $page-1 < 1 ? 1 : $page-1;
    $next = $page+1 > $pagesum ? $pagesum : $page+1;
    return ['nowPage' => $page,'pre' => $pre, 'next' => $next, 'list' => $list];
}

参考文档


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值