zoukankan      html  css  js  c++  java
  • 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']));
    //这个进行上一个下一页 首末页的跳转数据分配
    }
  • 相关阅读:
    安装MSSQL2008出现的问题记录
    制作安装包遇到的问题
    算法设计方法动态规划
    基础果然要牢记(一次失败的电面)
    搜狗垂搜笔试
    几种堆的时间复杂度分析
    正则表达式转NFA
    组合数学(1)
    算法设计方法贪心算法
    最短路径问题
  • 原文地址:https://www.cnblogs.com/jiechn/p/4025905.html
Copyright © 2011-2022 走看看