Echop后台分页实现原理详解

ecshop后台开发,工作中分页中遇到的问题

1.通过筛选条件筛选出数据后,点击下一页返回没有筛选(所有数据)的第二页数据 效果

结果

点击分页后效果

问题:ecshop分页利用ajax实现,在点击下一页时会把分页数据($filter数组is_ajax=1  act:query  record_count:1480  page_count:70  page:2  start:0)同时传过去,通过Ajax实现重新获取下一页的数据

  所以需要通过传送一个参数来区分审核通过和审核不通过,查询的时候通过判断传入值(对应相应的sql条件)进行数据查询

  if ($_REQUEST['act'] == 'query') {

    

    check_authz_json('identity_approve_manage');





    if (isset($_POST['name']) && !empty($_POST['brand_name'])) //按关键字搜索

     {

        $brand_list = get_list('','',$_POST['name']);

     }elseif (isset($_POST['level']) && $_POST['level']==1)     //审核通过

     {   

        $sqlwhe=" WHERE a.type='0' AND a.approve_stat IN('3','6','9') AND a.is_processed='1' ";

        $brand_list = get_list($sqlwhe,$_POST['level'],'');

        

     }elseif  (isset($_POST['level']) && $_POST['level']==2)  //审核不通过

     {

        $sqlwhe=" WHERE a.type='0' AND a.approve_stat  NOT IN('3','6','9') AND a.is_processed='1' ";

        $brand_list = get_list($sqlwhe,$_POST['level'],'');

     }else{

        $wheretype=" WHERE a.type='0'";

        $brand_list = get_list($wheretype,'','');

                    //全部显示

     }

get_list()函数通过判断条件查询数据

function get_list($where = '',$filters='',$rand_name='') {



    $result = get_filter();

    if ($result === false) {

        /* 分页大小 */

        $filter = array();



        if (!empty($where) && !empty($filters))  //判断审核条件查询条件

        {

            $filter['level']=$filters;

        }

        if(empty($where) && !empty($rand_name))  //判断按关键字查询条件

        {

            $filter['name']=$rand_name;

        }

        if (isset($_POST['name']) && !empty($_POST['name']) )

        {

            if (strtoupper(EC_CHARSET) == 'GBK') {

                $keyword = iconv("UTF-8", "gb2312", $_POST['name']);

            } else {

                $keyword = $_POST['name'];

            }

            $sql = "SELECT COUNT(*)  FROM " . $GLOBALS['ecs'] -> table('identity_approve') . " a " . " LEFT JOIN " . $GLOBALS['sns'] -> table('user') . " u " . " ON u.uid = a.user_id  " . " WHERE (u.phone like '%{$keyword}%' or u.true_name like '%{$keyword}%') AND a.type='0' ";



        }else{

                $sql = "SELECT COUNT(*) FROM " . $GLOBALS['ecs'] -> table('identity_approve'). " a " . " LEFT JOIN " . $GLOBALS['sns'] -> table('user') . " u " . " ON u.uid = a.user_id  ".$where;



            }

        $filter['record_count'] = $GLOBALS['db'] -> getOne($sql);

        

        $filter = page_and_size($filter);

下面查询数据也一样

问题解决

问题2.第一次打开或刷新后打开页面,第一次点击下一页有反应,可以实现第二页效果而再点击下一页没反应,但通过后面的下来菜单点击跳转按钮可以实现

 

($_REQUEST['act'] == 'query') {



$car_list = car_list();

$smarty -> assign('car_info', $car_list['car']);

$smarty->assign('filter', $car_list['filter']);

$smarty->assign('record_count', $car_list['record_count']);

$smarty->assign('page_count', $car_list['page_count']);

//以上数据进行分页总记录数 当前页 下拉菜单跳转的数据分配

make_json_result($smarty -> fetch('car_list.htm'),'', array('filter' => $car_list['filter'], 'page_count' => $car_list 

['page_count']));

//这个进行上一个下一页 首末页的跳转数据分配

}

 

你可能感兴趣的:(echo)