2010-11-24 13 views
0

これまでのところ、get(table)コマンドのページネーションを取得するのに大いに役立ちました。codeigniterクエリのページ番号

私が必要とするのは、SQLのwhere文に基づいて、いくつかのリンクテーブルからエントリのほんの少数を選ぶことです。

私は queryコマンドを使用する1つであると思いますが、そのコマンドが任意のより多くの情報がなければ助け

答えて

2

のために、このような$config['per_page']

おかげで余分なパラメータを取らないので、この場合には、どのように改ページをしますか私があなたが探しているものは、次のようなものだと思う。

public function pagination_example($account_id) 
{ 
    $params = $this->uri->ruri_to_assoc(3, array('page')); 

    $where = array(
     'account_id' => $account_id, 
     'active'  => 1 
    ); 

    $limit = array(
     'limit'  => 10, 
     'offset' => (!empty($params['page'])) ? $params['page'] : 0 
    ); 

    $this->load->model('pagination_model'); 
    $data['my_data'] = $this->pagination_model->get_my_data($where, $limit); 

    foreach($this->uri->segment_array() as $key => $segment) 
    { 
     if($segment == 'page') 
     { 
      $segment_id = $key + 1; 
     } 
    } 

    if(isset($segment_id)) 
    { 
     $config['uri_segment'] = $segment_id; 
    } 
    else 
    { 
     $config['uri_segment'] = 0; 
    } 

    $config['base_url'] = 'http://'.$_SERVER['HTTP_HOST'].'/controller_name/method_name/whatever_your_other_parameters_are/page/';    
    $config['total_rows'] = $this->pagination_model->get_num_total_rows();// Make a method that will figure out the total number 
    $config['per_page']  = '10'; 

    $this->load->library('pagination'); 
    $this->pagination->initialize($config); 
    $data['pagination'] = $this->pagination->create_links(); 

    $this->load->view('pagination_example_view', $data); 

} 

    // pagination_model 
public function get_my_data($where = array(), $limit = array()) 
{ 
    $this->db 
     ->select('whatever') 
     ->from('wherever') 
     ->where($where) 
     ->limit($limit['limit'], $limit['offset']); 
    $query = $this->db->get(); 

    if($query->num_rows() > 0) 
    { 
     $data = $query->result_array(); 
     return $data; 
    } 
    return FALSE; 
} 

これはあなたが少しより特異的であることができる場合、私は多くを助けて幸せいただきたい求めているものではない場合、これは、少なくとも右のトラック であなたを取得する必要があります。どのようにあなたのコードのいくつかについて。

+0

私の最大の問題は、$ config ['total_rows']を設定する方法です。私はデータベースを2回クエリしなければならないという気持ちがあります。一度は制限なしで($ config ['total_rows']を取得するため)、もう一度ディスプレイの制限で2回目です。それは非効率的に聞こえる。そうですか? – salmane

+0

はいそうです。 2つのクエリ。 – trix

0

私が考えることができる唯一の選択肢は、selectステートメントでカウントをコーディングするか、クエリを制限しないでarray_sliceを使用して返された配列の一部を選択することです。

関連する問題