2010-12-01 26 views
1

私はたくさん試しましたが、これを理解するようですが、どんな助けにも感謝しています。私の記事には投票権があり、投票された記事を最も多く表示するはずのページがあります。 codeigniter btwを使用しています。 コントローラ:codeigniterページ区切りが期待通りに機能しない

function most_voted() 
    { 
     $per_page = 3; 
     $cur_page = $this->uri->segment(4); 
     /* 
     if($cur_page == "") $cur_page = 1; 
     else $cur_page = (integer)$cur_page; 
     */ 
     $offset = ($cur_page - 1) * $per_page; 
     if($offset < 0) $offset = 0; 
     $this->load->model('article_model'); 
     $result_rows = $this->article_model->GetMostVoted($per_page,$cur_page); 
     $total_rows = sizeof($result_rows) + 10; 
     echo "total rows is : ".$total_rows.'<br>'; 
     echo "cur page is : $cur_page <br>"; 

     //$this->load->library('pagination'); 
     $config['base_url'] = base_url().'articles/most_voted/page/'; 
     $config['uri_segment'] = 4; 
     $config['num_links'] = 3; 
     $config['first_link'] = '<<First'; 
     $config['last_link'] = 'Last>>'; 
     $config['prev_link'] = '< Previous'; 
     $config['next_link'] = 'Next >'; 
     $config['total_rows'] = $total_rows; 
     $config['per_page'] = $per_page; 
     $this->pagination->initialize($config); 


     $data['articles'] = $result_rows; 
     $data['view_file_name'] = 'articles/all_articles_view'; 
     $this->load->view('includes/template',$data); 
     //echo $this->db->last_query(); 
    } 

モデル:

function GetMostVoted($limit,$offset) 
    { 
     $this->db->order_by('votes','desc'); 
     $q=$this->db->get('cgh_articles',$limit,$offset); 
     if($q->num_rows() > 0) 
     { 
      foreach($q->result() as $row) 
      { 
       $data[] = $row; 
      } 
      return $data; 
     } 
    } 

問題: 問題は、私は <前の1 2 3 4 5次へ> のようにページネーションを得るが、ものの2をクリックするとに行くということですurl:page/3 3をクリックするとurlに行きます:page/6 4をクリックするとurlに行きます:page/9 など。 ページ/ 2に行くには2をクリックし、ページ/ 3には3をクリックするなどします。何がうまくいかないかについての提案はありますか?

これ以上の情報が必要な場合は、ありがとうございます。

答えて

3

ページネーションクラスの仕組みは、ページを開始するアイテムを返すことです。

たとえば、url:hostanme/controller/page/9は、ページが9番目に投票された記事からレンダリングされることを意味します。 codeigniter documentationの例をご覧ください。

また、$total_rows = sizeof($result_rows) + 10;があります。何故ですか ?

+0

ありがとうございます。 sizeof($ result_rows)+ 10はちょうど整数ですが、当分の間はハードコード化されています。返される結果の実際の数で置き換えます。だから、あなたは既定のciページネーションが私が去ったものを私に与えないだろうか? – SIndhu

+0

あなたは何か違うものがあるように思えます。しかし、それを考えるなら、Codeigniterライブラリの仕組みは良い習慣です。あなたのページのレンダリングを開始するべき項目を正確に示しているので、自分自身でそれを把握する必要はありません。 –

+0

私はあなたの意見を見て、今ページネーションライブラリがどのように機能するのか理解しています(ただし、ciユーザドキュメントのどこにでも言及しています)。しかし、正直言って、私は私のサイトにそれを持っていないと思っています。それが私を混乱させたら、私のエンドユーザをさらに混乱させるでしょう。ユーザーpovから、ほとんどのサイト、フォーラムでは、3,7 = 7などをクリックするとページ3に移動します。だから、私はそれが違う何かを書く必要があると思いますか? – SIndhu

関連する問題