2012-04-02 81 views
0

进行分页这是片断的控制器,无法通过记录

function email($start = 0) { 

    $result = $this -> admintools -> get_email_errors(); 
    if ($result) { 
     $data['email'] = $result; 
    } 

    $data['header'] = $this -> load -> view('includes/header', '', true); 
    $data['footer'] = $this -> load -> view('includes/footer', $data, true); 
    $data['menu_system_errors'] = $this -> load -> view('includes/menu_system_errors', $data, true); 

    //$config['total_rows'] = $this -> db -> query($query); 
    $config['base_url'] = '/admin/email'; 
    $config['total_rows'] = 1000; 
    $config['per_page'] = 10; 
    $config['use_page_numbers'] = TRUE; 

    for ($i = $start; $i < $start + $config['per_page']; $i++) { 
     if (isset($data_paging[$i])) { 
      $data['email']= $data_paging[$i]; 
     } 
    } 

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

    $this -> load -> view('/admin/email', $data); 

} 

,这是视图

<?=$header 
?> 
<?=$menu_system_errors 
?> 

<style> 
    .alpha-link { 
     font-size: 22px; 
    } 

</style> 
<h1>System Errors EMail</h1> 
<table> 
    <thead> 
     <tr> 

      <th>Marketer ID</th> 
      <th></th> 
      <th>IP </th> 

      <th>Received Date</th> 
      <th>From Domain</th> 
      <th>Subject</th> 

     </tr> 
    </thead> 
    <? foreach ($systemerrors_email as $systemerror) { 
    ?> 
    <tr> 
     <td><?=$systemerror->marketerID 
     ?></td> 
     <td><?=$systemerror->ip 
     ?></td> 

     <td></td> 
     <td><?=$systemerror->received 
     ?></td> 
     <td><?=$systemerror->fromDomain 
     ?></td> 
     <td><?=$systemerror->subject 
     ?></td> 

    </tr> 
    <? }?> 
</table> 
<?echo $this -> pagination -> create_links();?> 

的问题是它创建的分页链接,但显示出相同记录,只有10行,但不是全部。有什么问题吗?

我通过查询使用SELECT和JOIN得到记录。

+0

通常你在数据库级别进行分页,所以你有没有取的记录然而,许多不计其数,扔掉一切,但你要显示的X-每页。 – 2012-04-02 18:11:49

+0

您应该在mySQL查询中包含LIMIT子句并使用偏移量功能。 – 2012-04-02 18:17:49

回答

1

你需要知道什么配置键,以便获得分页工作做什么。

$config['total_rows']定义要显示的行的总量;

$config['per_page']定义你想要多少每页显示的。

显示10个结果的原因是因为您的per_page值设置为10,如果需要更多,请将其更改为所需的值。另外,您的控制器中的变量$start不应该设置为$this->uri->segment(3)?由于它依赖于URL参数,因此您不允许循环从下一部分行开始 - 您基本上会迫使它显示前十个查询。如果你设置这个变量以便它依赖于动态的东西,你将能够获得其他数据。