2011-05-11 15 views
1

私が聞こうとしていることが可能かどうかはわかりません。私はおそらく考えていませんが、私はとにかく質問すると思いました。code igniter並べ替えオプションを使用してページ区切り

ページ分割をリセットする方法はありますか?

ページがあり、それにページ番号と並べ替えオプションがあります。すべてうまくいきますが、ソートオプションの1つが変更された場合、ユーザーを最初のページに戻したいと思います。

(私はお気軽に私はこれをやっている方法は、あなたが改善のための提案があれば、私はそうしたい結果を得るために、すべての最良の方法ではないかなり確信している。)

 $array = explode ("_",$this->uri->segment(4)); 

     if(count($array) > 1){ 
      $search_id = $array[1]; 
      $start = $this->uri->segment(5); 
      $uri_segment = 5; 
     }else{ 
      $start = $this->uri->segment(4); 
      $uri_segment = 4; 
      $search_id = null; 
     } 
$config['per_page'] = $this->settings['PRODUCTS_PER_PAGE']; 

$config['total_rows'] = $this->categories_model->get_num_rows($cat_id , $search_type, $search_data); 

$query = $this->categories_model->get_category_pages($cat_id, $new_limit, $new_sort, $search_id, $start, $this->settings['CATEGORY_ORDER'], $search_type, $search_data, $config['total_rows'])) 

$config['base_url'] = base_url() . 'index.php/categories/view/' . $cat_id ."/" . $search_string ; 

$config['uri_segment'] = $uri_segment; 

//Congig settings for pagination 
$config['full_tag_open'] = '<div id="pagination" style= "clear:both;">'; 
$config['full_tag_close'] = '</div>'; 

//Initialise pagination 
$this->pagination->initialize($config); 
+0

あなたがページのデータを表示するには、テーブルを使用していますか? – Shivaas

+0

いいえ私はそれぞれの結果をループしてページにエコーしているだけではありません。 – flyersun

+0

私はテーブルにデータを表示することをお勧めします(cssで書式設定されていても、エンドユーザーの表のように見えません!)、jQuery dataTablesプラグインを利用して並べ替え、検索、ページ設定を行います。プラグインはサーバーサイドページネーションをサポートしているので、コードはある程度再利用可能です。 – Shivaas

答えて

3

あなたは、url.soで表示されないコントローラのデフォルトソートを維持することができます。ソートは最初のページに戻りません。

サンプル

class Post extends Jewelery_Controller { 

public function __construct() { 
    parent::__construct(); 
    $this->load->model('Prime_model'); 
} 

    public function index($ordr_by = 'post_title', $sortr = 'ASC') { 

    if ($this->uri->segment(6)) { 
    $data['segment'] = $this->uri->segment(6); 
    } else { 
    $data['segment'] = 0; 
    } 

    if ($this->uri->segment(4)) { 
    $ordr_by = $this->uri->segment(4); 
    } 

    if ($this->uri->segment(5)) { 
    $sortr = $this->uri->segment(5); 
    } 

    $data['title'] = 'All Posts'; 
    $this->load->library('pagination'); 
    $config['base_url'] = base_url() . 'admin/post/index/' . $ordr_by . '/' . $sortr; 
    $config['full_tag_open'] = '<div class="pagination"><ul>'; 
    $config['full_tag_close'] = '</ul></div>'; 
    $config['cur_tag_open'] = '<li class="active"><a href="">'; 
    $config['cur_tag_close'] = '</a></li>'; 
    $config['prev_tag_open'] = '<li>'; 
    $config['prev_tag_close'] = '</li>'; 
    $config['next_tag_open'] = '<li>'; 
    $config['next_tag_close'] = '</li>'; 
    $config['num_tag_open'] = '<li>'; 
    $config['num_tag_close'] = '</li>'; 
    $config['uri_segment'] = 6; 
    $config['total_rows'] = $this->db->get('jewel_posts')->num_rows(); 
    $config['per_page'] = 10; 
    $this->pagination->initialize($config); 


    $data['post_info'] = $this->Prime_model->master_join('jewel_posts', 'jewel_jewelry_type', 'jewel_posts.jewelry_type = jewel_jewelry_type.jewelry_type_id', 'left', FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, $ordr_by, $sortr, $config['per_page'], $data['segment']); 
    $this->load->view('admin/header', $data); 
    $this->load->view('admin/post/index'); 
    $this->load->view('admin/footer'); 
} 
関連する問題