douji8017 2019-03-10 17:31
浏览 43

CodeIgniter分页不起作用(在其他页面中)

I'm new in php, and in CI as well. I'm creating my own web application, and i've encountered an issue with pagination.

My main pagination on index is working as charm without problems, but if i init the pagination in other pages, it shows links as well as the pagination, but when i click, the page refreshes wish /6 (content per page) showing same stuff that have been generated from the database.

That is the code i use in function index:

public function index($offset = 0){
        $config['base_url'] = base_url() . '/usernames/index/';
        $config['total_rows'] = $this->db->count_all('usernames');
        $config['per_page'] = 6;
        $config['uri_segment'] = 3;

        $config['full_tag_open'] = '<ul class="pagination justify-content-center">';
        $config['full_tag_close'] = '</ul>';
        $config['attributes'] = ['class' => 'page-link'];
        $config['first_link'] = false;
        $config['last_link'] = false;
        $config['first_tag_open'] = '<li class="page-item">';
        $config['first_tag_close'] = '</li>';
        $config['prev_link'] = 'Previous';
        $config['prev_tag_open'] = '<li class="page-item">';
        $config['prev_tag_close'] = '</li>';
        $config['next_link'] = 'Next';
        $config['next_tag_open'] = '<li class="page-item">';
        $config['next_tag_close'] = '</li>';
        $config['last_tag_open'] = '<li class="page-item">';
        $config['last_tag_close'] = '</li>';
        $config['cur_tag_open'] = '<li class="page-item active"><a href="#" class="page-link">';
        $config['cur_tag_close'] = '<span class="sr-only">(current)</span></a></li>';
        $config['num_tag_open'] = '<li class="page-item">';
        $config['num_tag_close'] = '</li>';
        $config['attributes'] = array('class' => 'page-link');

        $this->pagination->initialize($config);

        $data['title'] = 'Lastest Usernames';

        $data['posts'] = $this->post_model->get_usernames(FALSE, $config['per_page'], $offset);

        $this->load->view('templates/header');
        $this->load->view('usernames/index', $data);
        $this->load->view('templates/footer');
    }

This is what i'm using in function snapchat:

public function snapchat($offset = 0){
        $config['base_url'] = base_url() . '/usernames/snapchat/';
        $config['total_rows'] = $this->db->count_all('usernames');
        $config['per_page'] = 6;
        $config['uri_segment'] = 3;

        $config['full_tag_open'] = '<ul class="pagination justify-content-center">';
        $config['full_tag_close'] = '</ul>';
        $config['attributes'] = ['class' => 'page-link'];
        $config['first_link'] = false;
        $config['last_link'] = false;
        $config['first_tag_open'] = '<li class="page-item">';
        $config['first_tag_close'] = '</li>';
        $config['prev_link'] = 'Previous';
        $config['prev_tag_open'] = '<li class="page-item">';
        $config['prev_tag_close'] = '</li>';
        $config['next_link'] = 'Next';
        $config['next_tag_open'] = '<li class="page-item">';
        $config['next_tag_close'] = '</li>';
        $config['last_tag_open'] = '<li class="page-item">';
        $config['last_tag_close'] = '</li>';
        $config['cur_tag_open'] = '<li class="page-item active"><a href="#" class="page-link">';
        $config['cur_tag_close'] = '<span class="sr-only">(current)</span></a></li>';
        $config['num_tag_open'] = '<li class="page-item">';
        $config['num_tag_close'] = '</li>';
        $config['attributes'] = array('class' => 'page-link');

        $this->pagination->initialize($config);

        $data['title'] = 'Lastest Snapchat Usernames';

        $data['posts'] = $this->post_model->get_usernames(FALSE, $config['per_page'], $offset);
        $filter = "Snapchat";
        $filteredData = $this->post_model->get_snapchat($filter);

        $data=[
            'F_username' => $filteredData->result_array()
        ];

          $this->load->view('templates/header');
          $this->load->view('usernames/snapchat', $data);
          $this->load->view('templates/footer');
    }

This is the code i'm using in model:

public function get_snapchat($filter, $slug = FALSE, $limit = FALSE, $offset = FALSE){
        if ($limit) {
            $this->db->limit($limit ,$offset);
        }
        $filter = "Snapchat";

        $query = $this->db->get_where('usernames', array('platform' => $filter));
        return $query;
    }
  • 写回答

1条回答 默认 最新

  • dqve65954 2019-03-18 07:47
    关注

    This is the simples step :

    1. Create pagination.php in application/config to separate pagination config from your Controller (https://gist.github.com/mikedfunk/3504432)

    2. Models :

    
    /* Your_model.php */
    // -------------------
    
    // Get Data With Limit
    public function data($start, $limit) {
    
      return $this->db->from('TABLE_NAME')
                      ->limit($start, $limit)
                      ->get();
    }
    
    // Total All Rows
    public function total() {
    
      return $this->db->count_all_results('TABLE_NAME');
    }
    
    // Get First Records
    public function first_record($current_page, $per_page) {
    
      return ($current_page - 1) * $per_page;
    }
    
    
    1. Controller :
    /* Your_controller.php */
    // -------------------
    
    public function output() {
    
      // Library
      $this->load->library('pagination');
    
      // Pagination Config
      $config['base_url'] = site_url('Your/Controller');
      $config['per_page'] = 30;
      $config['uri_segment'] = 3;
    
      // Starting
      $curpage = $this->uri->segment(3);
      $start = $this->your_model->first_record($curpage, $config['per_page']);
      $limit = $config['per_page'];
    
      // Get Result
      $data['result'] = $this->your_model->data($start, $limit);
    
      // Get Total Records
      $config['total_rows'] = $this->your_model->total();
    
      // Process Pagination
      $this->pagination->initialize($config);
    
      // Prep Data
      $data['navigation'] = $this->pagination->create_links();
    
      // Load View (Passing $result & $navigation data)
      $this->layout->view('YOUR_VIEW_HERE', $data);
    
    }
    

    You need adjust to your database config :)

    评论

报告相同问题?

悬赏问题

  • ¥15 2024-五一综合模拟赛
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭