无法通过记录
问题描述:
进行分页这是片断的控制器,无法通过记录
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得到记录。
答
你需要知道什么配置键,以便获得分页工作做什么。
$config['total_rows']
定义要显示的行的总量;
$config['per_page']
定义你想要多少每页显示的。
显示10个结果的原因是因为您的per_page
值设置为10,如果需要更多,请将其更改为所需的值。另外,您的控制器中的变量$start
不应该设置为$this->uri->segment(3)
?由于它依赖于URL参数,因此您不允许循环从下一部分行开始 - 您基本上会迫使它显示前十个查询。如果你设置这个变量以便它依赖于动态的东西,你将能够获得其他数据。
通常你在数据库级别进行分页,所以你有没有取的记录然而,许多不计其数,扔掉一切,但你要显示的X-每页。 – 2012-04-02 18:11:49
您应该在mySQL查询中包含LIMIT子句并使用偏移量功能。 – 2012-04-02 18:17:49