分頁原理是什麼

來源:互聯網
上載者:User
資料分頁需要以下幾個條件:

1. 參與分頁的總條數 【$msg_count】 ,該值通過資料庫查詢可以擷取到;

2. 每頁顯示的條數【$pagesize】 ,這個數值由自己定義;

3. 當前頁的頁碼數 【$page】,該數值通過地址欄傳遞和接收;

4. 可以通過以上資料計算出總頁數 【$pagecount】 ,此處需要藉助ceil();

【$pagecount = ceil($msg_count/$pagesize);】

5. 資料庫查詢藉助sql語句中的【limit】來實現資料的變化:

例如:

select * from 表名 where 條件 limit $startnum , $pagesize;

而$startnum = ($page-1)*$pagesize;

執行個體:

/** * 取得上次的過濾條件 * @param   string  $param_str  參數字串,由list函數的參數組成 * @return  如果有,返回array('filter' => $filter, 'sql' => $sql);否則返回false */function get_filter($param_str = ''){    $filterfile = basename(PHP_SELF, '.php');//string basename ( string $path [, string $suffix ] )                             返迴路徑中的檔案名稱部分如果檔案名稱是以 suffix 結束的,那這一部分也會被去掉。     if ($param_str)    {        $filterfile .= $param_str;    }    if (isset($_GET['uselastfilter']) && isset($_COOKIE['ECSCP']['lastfilterfile'])        && $_COOKIE['ECSCP']['lastfilterfile'] == sprintf('%X', crc32($filterfile)))    {        return array(            'filter' => unserialize(urldecode($_COOKIE['ECSCP']['lastfilter'])),            'sql'    => base64_decode($_COOKIE['ECSCP']['lastfiltersql'])        );    }    else    {        return false;    }}
/** * 儲存過濾條件 * @param   array   $filter     過濾條件 * @param   string  $sql        查詢語句 * @param   string  $param_str  參數字串,由list函數的參數組成 */function set_filter($filter, $sql, $param_str = ''){    $filterfile = basename(PHP_SELF, '.php');    if ($param_str)    {        $filterfile .= $param_str;    }    setcookie('ECSCP[lastfilterfile]', sprintf('%X', crc32($filterfile)), time() + 600);    setcookie('ECSCP[lastfilter]',     urlencode(serialize($filter)), time() + 600);    setcookie('ECSCP[lastfiltersql]',  base64_encode($sql), time() + 600);}
/** * 供貨商資源管理 * @param    bool    $is_pagtion * @return    array   $arr */function suppliers_resource_manage($is_pagtion=true){    global $db,$ecs;    $result = get_filter();    if ($result === false)    {        $aiax = isset($_GET['is_ajax']) ? $_GET['is_ajax'] : 0;        /* 過濾資訊 */        $filter['sort_by'] = empty($_REQUEST['sort_by']) ? 'r.resource_id' : trim($_REQUEST['sort_by']);        $filter['sort_order'] = empty($_REQUEST['sort_order']) ? 'DESC' : trim($_REQUEST['sort_order']);        $filter['resource_id'] = empty($_REQUEST['resource_id'])  ? '' : $_REQUEST['resource_id'];        $filter['admin_name'] = empty($_REQUEST['admin_name'])  ? '' : trim($_REQUEST['admin_name']);        $filter['resource_name'] = empty($_REQUEST['resource_name'])  ? '' : trim($_REQUEST['resource_name']);        $filter['admin_id']  = isset($_REQUEST['admin_id'])?intval($_REQUEST['admin_id']):'-1';        $filter['resource_type'] = empty($_REQUEST['resource_type']) ? '-1' : intval($_REQUEST['resource_type']);        $filter['resource_status'] = empty($_REQUEST['resource_status']) ? '-1' : intval($_REQUEST['resource_status']);        $filter['resource_rank'] = empty($_REQUEST['resource_rank']) ? '-1' : intval($_REQUEST['resource_rank']);        $filter['resource_key'] = empty($_REQUEST['resource_key'])  ? '' : trim($_REQUEST['resource_key']);        $filter['menuid'] = 7;         $where = 'WHERE 1 ';        /* 分頁大小 */        $filter['page'] = empty($_REQUEST['page']) || (intval($_REQUEST['page']) <= 0) ? 1 : intval($_REQUEST['page']);        if (isset($_REQUEST['page_size']) && intval($_REQUEST['page_size']) > 0)        {            $filter['page_size'] = intval($_REQUEST['page_size']);        }        elseif (isset($_COOKIE['ECSCP']['page_size']) && intval($_COOKIE['ECSCP']['page_size']) > 0)        {            $filter['page_size'] = intval($_COOKIE['ECSCP']['page_size']);        }        else        {            $filter['page_size'] = 15;        }                if(!empty($filter['resource_id']))        {            $resource_id = $filter['resource_id'] == -1 ? 0 : $filter['resource_id'];            $where .= " and r.resource_id='".$resource_id."'";        }        if($filter['resource_name']){            $where .= " AND r.resource_name like '%".mysql_like_quote($filter['resource_name'])."%' ";        }        if($filter['admin_id'] > -1)        {            $where .= " AND r.admin_id = '".$filter['admin_id']."' ";        }        if ($filter['resource_type'] > -1)         {            $where .= " AND r.resource_type = '" . $filter['resource_type'] . "'";        }        if ($filter['resource_status'] > -1)         {            $where .= " AND r.resource_status = '" . $filter['resource_status'] . "'";        }        if ($filter['resource_rank'] > -1)         {            $where .= " AND r.resource_rank = '" . $filter['resource_rank'] . "'";        }        if($filter['resource_key']){            $where .= " AND r.remark like '%".mysql_like_quote($filter['resource_key'])."%' ";        }        /* 記錄總數 */        $sql = "SELECT COUNT(r.resource_id) FROM " . $ecs->table('suppliers_resource')." as r                     LEFT JOIN ".$ecs->table('admin_user') . " as u                        ON u.user_id = r.admin_id  " . $where;        $filter['record_count']   = $db->getOne($sql);        $filter['page_count']     = $filter['record_count'] > 0 ? ceil($filter['record_count'] / $filter['page_size']) : 1;        /* 查詢 */        $sql = "SELECT r.resource_id, u.user_name as admin_name, r.resource_name, r.resource_link, r.resource_type, r.resource_status, r.resource_rank, r.remark, r.add_time FROM " . $ecs->table('suppliers_resource') . " as r                     LEFT JOIN " . $ecs->table('admin_user') . " as u ON u.user_id = r.admin_id  " . $where;        $sort_by  = $filter['sort_by'];        $sort_order = $filter['sort_order'];        $sql .="GROUP BY r.resource_id ORDER BY " . $sort_by . " " . $sort_order;        if($is_pagtion)        {            $sql .=" LIMIT ".($filter['page'] - 1)*$filter['page_size'].",".$filter['page_size'];        }        set_filter($filter, $sql);    }    else    {        $sql    = $result['sql'];        $filter = $result['filter'];    }    $query=$sql;    $row = $db->getAll($sql);    /* 格式話資料 */    foreach ($row AS $key => $value)    {           if ($row[$key]['resource_type'] == 1) {            $row[$key]['resource_type'] = '中模';        }elseif ($row[$key]['resource_type'] == 2) {            $row[$key]['resource_type'] = '泳裝';        }elseif ($row[$key]['resource_type'] == 3) {            $row[$key]['resource_type'] = '阿里';        }elseif ($row[$key]['resource_type'] == 2) {            $row[$key]['resource_type'] = '17網';        }        if ($row[$key]['resource_status'] == 1) {            $row[$key]['resource_status'] = '已審核';        }elseif ($row[$key]['resource_status'] == 2) {            $row[$key]['resource_status'] = '已棄用';        }        if ($row[$key]['resource_rank'] == 1)         {            $row[$key]['resource_rank'] = 'A';        }elseif ($row[$key]['resource_rank'] == 2) {            $row[$key]['resource_rank'] = 'B';        }elseif ($row[$key]['resource_rank'] == 3) {            $row[$key]['resource_rank'] = 'C';        }        if(strpos($row[$key]['resource_link'], 'http://') === false)        {            if (strpos($row[$key]['resource_link'], 'https://') === false)             {                $row[$key]['resource_link'] = substr_replace($row[$key]['resource_link'], 'http://', 0, 0);            }        }    }    $arr = array('result' => $row, 'filter' => $filter, 'page_count' => $filter['page_count'], 'record_count' => $filter['record_count'],'query'=>$query);    return $arr;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.