【问题标题】:Codeigniter sort by price pagination not working from page 2 onwardsCodeigniter 按价格分页排序从第 2 页开始不起作用
【发布时间】:2019-01-27 04:52:22
【问题描述】:

我在 CI 分页方面遇到了一些问题。排序现在都很好,但是当我尝试导航到第 2 页时,列表的排序将被“重新启动”。重启我的意思是,回到我第一次加载页面时的第一种排序方法。

排序选项:最近,价格从低到高和价格从高到低

页面控制器:

public function index() {
    $query_string = $this->input->server('QUERY_STRING');
    $page_start = $this->input->get('page');
    $products = $this->Marketplace_model->get_products($query_string);
    $data['products'] = array_slice($products, $page_start, 12);

    $this->_doPagination($data['products'][0]["total_rows"], $test);

    $data['sorts'] = array("recent" => "Most Recent", "lowtohigh" => "Price Low To High", "hightolow" => "Price High To Low");
    $data['sortselected'] = get_sortby();

    $data['selectedSortBy'] = $query_string;

    $this->template->set('title', 'Marketplace');
    $this->template->load('default_layout', 'contents', 'index', $data);
}

分页控制器:

private function _doPagination($total_rows = NULL) {
    $per_page = get_perpage();

    $this->load->library('pagination');
    $config['total_rows'] = ($total_rows != NULL) ? $total_rows : 0;
    $config['per_page'] = ($per_page != NULL) ? $per_page : 12;
    $config['num_links'] = 2;
    $config['use_page_numbers'] = TRUE;
    $config['base_url'] = '';
    $config['page_query_string'] = TRUE;
    $config['query_string_segment'] = 'page';
    $config['full_tag_open'] = '<ul class="pagination justify-content-center">';
    $config['full_tag_close'] = '</ul>';
    $config['first_link'] = '«';
    $config['first_tag_open'] = '<li class="page-item">';
    $config['first_tag_close'] = '</li>';
    $config['first_url'] = '?page=1&';
    $config['last_link'] = "»";
    $config['last_tag_open'] = '<li class="page-item">';
    $config['last_tag_close'] = '</li>';
    $config['next_link'] = false;
    $config['next_tag_open'] = '<li class="page-item">';
    $config['next_tag_close'] = '</li>';
    $config['prev_link'] = false;
    $config['prev_tag_open'] = '<li class="page-item">';
    $config['prev_tag_close'] = '</li>';
    $config['cur_tag_open'] = '<li class="page-item active"><a href="#" class="page-link">';
    $config['cur_tag_close'] = '</a></li>';
    $config['num_tag_open'] = '<li class="page-item">';
    $config['num_tag_close'] = '</li>';
    $this->pagination->initialize($config);
}

型号:

public function get_products($query_string) {

    if ($query_string == 'recent') {
        $sql = "select total_rows=(select count(*) from o2o_pit_live_product)
            ,   * from o2o_pit_live_product order by supplier_on DESC";
    } elseif ($query_string == 'lowtohigh') {
        $sql = "select total_rows=(select count(*) from o2o_pit_live_product)
            ,   * from o2o_pit_live_product order by regular_price ASC";
    } elseif ($query_string == 'hightolow') {
        $sql = "select total_rows=(select count(*) from o2o_pit_live_product)
            ,   * from o2o_pit_live_product order by regular_price DESC";
    } else {
        $sql = "select total_rows=(select count(*) from o2o_pit_live_product)
            ,   * from o2o_pit_live_product";
    }

     $result = $this->db->query($sql)->result_array();
    if ($result) {
        return $result;
    }
    return NULL;
}

观看次数:

<select name="filter" class="custom-select filter" id="filter" onchange="location = this.value;">
<?php foreach ($sorts as $skey => $sname): ?>
    <option value="?<?php echo $skey; ?>" 
    <?php
    if ($selectedSortBy === 'recent' && $skey === 'recent') {
    echo 'selected';
    }
    if ($selectedSortBy === 'lowtohigh' && $skey === 'lowtohigh') {
    echo 'selected';
    }
    if ($selectedSortBy === 'hightolow' && $skey === 'hightolow') {
    echo 'selected';
    }
    ?> >
    <?php echo $sname; ?>
    </option>
<?php endforeach; ?>
</select>

请帮助我。提前致谢。

【问题讨论】:

    标签: codeigniter sorting pagination


    【解决方案1】:

    array_slice 第二个参数设置为从哪里开始记录。你设置页码而不是从哪里开始记录。所以你的代码应该如下所示

    $start = ($page_start-1)*get_perpage();
    array_slice($products,$start,get_perpage());
    

    【讨论】:

    • 嗨,它仍然无法正常工作。结果现在井井有条。
    猜你喜欢
    • 2013-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-17
    • 2014-02-16
    • 1970-01-01
    • 2014-01-13
    • 1970-01-01
    相关资源
    最近更新 更多