CodeIgniter分页返回正确的限制,但每页都有相同的内容

时间:2016-07-17 17:49:30

标签: php mysql codeigniter pagination

codeigniter pagination - results remain same on every page中海报面临的问题正是我现在所处的位置。使用下面的代码,我返回所有db表项的列表,但只获得每个后续页面上第一个分页页面的10个结果;

Articlelist.php(控制器)

 //Get Article listing from DB table
 function index($page='')
 {
    $config = array();
    $config['base_url'] = base_url() . 'articlelist/index/';
    $config['total_rows'] = $this->article_model->record_count();
    $config['per_page'] = 10;
    $config['uri_segment'] = 3;

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

    $page = $this->uri->segment(3);
    $data['results'] = $this->article_model->getList($page * $config['per_page']);
    $data['links'] = $this->pagination->create_links();

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

Article_model.php

//COUNT ALL ARTICLES IN DB TABLE
    function record_count()
    {
      return $this->db->count_all('articles');
    }

    //GET ALL ARTICLES BY ID
    function getList($limit)
    {
       $limit = 10;
       $this->db->limit($limit);
       $query = $this->db->get('articles');

           if($query->num_rows() > 0)
           {
              foreach ($query->result() as $row)
              {
                $data[] = $row;
              }
                return $data;
            }
                return false;                 
    }  

导致以下视图(并在URL栏中注明返回相同的结果);
query result return page 1

....等等......

query result return page 2

......(烦恼地)等......
query result return page 3

它只是因为分页功能毫无障碍地传递这一事实而烦人,然而,articles DB的结果返回永远不会偏离那十个返回的结果。有什么我想念的吗? 当然 3.0.6文档中的持续咨询并没有动摇我对当前问题的任何见解。难倒......甚至尝试从return false;的末尾删除function getList,但无济于事。试图保持耐心并检查替代代码格式,但这是以前编写的最稳定的。

对于那些根据所加载的观点可能会看到某些内容的人来说,' foreach;

articles_list.php

<?php
echo '<div class="content_bottom">';
echo '<div class="grid_1_of_2 box">';
echo '<br>';
echo '<div class="span_1_of_3_text2">';

if (!empty($results) && isset($results) && count($results) > 0){
  foreach ($results as $data){
    echo '<h3>Title:&nbsp;<a title="Click Here For Content" href="'?><?php echo base_url().'articlelist/view/'.$data->article_id.'">'. $data->title. '</a><br>Author:&nbsp;'.$data->name.'<br>Category:&nbsp;'.$data->category.'<br>Clicks:&nbsp;'.$data->clicks.'</h3><hr>';
  } 
} 
else
{
  echo '<p><font face="arial black" size="5" color="#0000CC">No Articles.</font></p>';
}
echo '<div id="pagination"><ul class="tsc_pagination tsc_paginationA tsc_paginationA01">'.$links.'</ul></div>';

echo '</div></div></div>';
?>  

希望那个应该足以继续下去。

*更新**

我要感谢@pradeep的努力,这有助于指出这是一个基于路由的问题。文章列表页面的路径设置为$route['articlelist'] = 'articlelist/index';。我的悲惨指数因为我在咨询文档方面没有太大的松懈而且在无情地搜索其他文档澄清这一事实而变得更加强烈。为了使所有这些更加复杂,文章URL重定向以查看链接中嵌入的引用内容完美无缺。由于我能够添加/编辑/删除内容,因此这是我目前唯一存在于我的抓取中的元素。

一个&#34;哦......我疼痛的头脑&#34;更新

使用@Sonu Bamniya提供的解决方案;

function index()
 {
    $config = array();
    $config['base_url'] = base_url('articlelist/index/');
    $config['total_rows'] = $this->db->get('articles')->num_rows();
    $config['per_page'] = 10;
    $config['uri_segment'] = 3;

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

    $page = ($this->uri->segment(3)) ? $this->uri->segment(3) : 0;
    $data['results'] = $this->article_model->getList($page , $config['per_page']);
    $data['links'] = $this->pagination->create_links();

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

最终结果是;
1st page article list results

第一页结果

enter image description here

第二页结果

这些结果与我在帖子中进一步完成的编码完全相同。我甚至还在重新梳理文件,寻找能够刺破这个不断膨胀的问题的文章 What am I missing?!?!? (pounds skull)

CAPITULATION

由于我必须放弃实用性,暂时不计算articles表格中的全部内容,并将其无限制地列在页面上(因为我不会这样做) ;目前有成千上万的文章)。我在页面底部放置了Back To Top链接,从而减轻了自己的负担。我确定在得到一百多篇文章之前,我已经找到了一个分页解决方案。我真的厌倦了这个摔跤,我只是想跳过它一段时间。 ; {

3 个答案:

答案 0 :(得分:0)

因为您在模型中设置了$limit = 10;,所以limit always updated to 0 to 10;

更改您的控制器部分:

$config['per_page'] = 10;
$page = ($this->uri->segment(3)) ? $this->uri->segment(3) : 0;
$data['results'] = $this->article_model->getList($page , $config['per_page']);

并在模型中使用

获取数据
function getList($page='0' , $limit='10')
{
 $this->db->limit($limit, $page);
 $query = $this->db->get('articles');

   if($query->num_rows() > 0)
   {
      foreach ($query->result() as $row)
      {
        $data[] = $row;
      }
        return $data;
    }
}

答案 1 :(得分:0)

$config['use_page_numbers'] = FALSE;

在配置中检查这个

答案 2 :(得分:-2)

在模型和控制器中使用POST代替GET