0

使用しているアプリケーションの一部のページでページ付けを正常に作成しましたが、これでは作成できません。

データベースに7つのレコードがあり、ページが表示されると、5つではなく7つのレコードすべてが表示されます。

案の定、ページングのリンクは表示されません。

これが私のコントローラーコードです:

public function displayAllFaqCategories()
    {

         //initializing & configuring paging

        $currentUser = $this->isLoggedIn();
        $this->load->model('faqCategoriesModel');
        $this->db->order_by('sorder');
        $limit = 5;
        $offset = 3;

        $offset = $this->uri->segment(3);
        $this->db->limit(5, $offset);

        $data['faq_categories'] = $this->faqCategoriesModel->selectCategoriesAndParents();
        $totalresults = $this->db->get('faq_categories')->num_rows();

        //initializing & configuring paging
        $this->load->library('pagination');
        $config['base_url'] = site_url('/backOfficeUsers/faqcategories');
        $config['total_rows'] = $totalresults;
        $config['per_page'] = 5;
        $config['uri_segment'] = 3;


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

        $errorMessage = '';
        $data['main_content'] = 'faq/faqcategories';
        $data['title'] = 'FAQ Categories';

        $this->load->vars($data,$errorMessage);
        $this->load->vars($currentUser);
        $this->load->view('backOffice/template');

    } // end of function displayAllFaqCategories

そして、これが私のモデル関数コードです:

public function selectCategoriesAndParents($selectWhat = array())
   {    
       $data = array();
       $query = $this->db->query("SELECT fq . * , COALESCE( fqp.$this->parent_name,  '0' ) AS parentname
                                  FROM $this->table_name AS fq
                                  LEFT OUTER JOIN $this->table_name AS fqp ON fqp.catid = fq.parentid"); 
       if($query->num_rows() > 0) 
       {
           foreach($query->result_array() as $row) 
               {
                   $data[] = $row;  
               }
           }           
       $query->free_result();
       return $data;
   } // end of function selectCategoriesAndParents    

ビューでは、レコードを含むテーブルの以下に次のコードがあります。

 <?php echo $this->pagination->create_links();?>

どんな助けでも深く感謝されます。

よろしく、ゾラン

4

2 に答える 2

1

あなたは2つの異なるものを混ぜ合わせたと思います。CIのActiveRecordクラスを部分的に使用していますが、クエリを自分で実行しています。

最も簡単な変更は次のとおりです。

    // get all the rows
    $data['faq_categories'] = $this->faqCategoriesModel->selectCategoriesAndParents();
    // figure out the count of all of them
    $totalresults = count($data['faq_categories']);
    // only take some of the rows of the array, instead of keeping all of them and then showing all 7 of your records
    $data['faq_categories'] = array_splice($data['faq_categories'], $offset, $limit);

うまくいけば、それはそれを修正するはずです!

元の問題が何であるかをさらに説明するために、これを実行すると、次のようになります。

$totalresults = $this->db->get('faq_categories')->num_rows();

前の行$this->db->limit(5, $offset);が考慮されるため、5行のみが返されます。次に、ページごとに5つだけ表示するようにページネーションライブラリに指示すると、ライブラリは実際にすべての結果を表示していると見なすため、ページネーションリンクは必要ありません。

于 2012-09-19T09:31:27.663 に答える
0

このように編集する

$offset = $this->uri->segment(3) ? $this->uri->segment(3) : 0;
于 2012-09-19T09:27:19.547 に答える