You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CodeIgniter3单视图双分页页码高亮异常问题求助

CodeIgniter 3 双分页表格页码高亮失效问题解决

问题描述

需在CodeIgniter 3视图中实现两个独立分页表格,目前表格可正常显示,但切换第一个表格分页功能正常,切换第二个表格至第二页时,对应页码的高亮效果不生效。

原代码问题分析

控制器配置问题

  1. 第二个分页的base_url硬拼接了第一个分页的URI分段值,导致分页类无法正确识别当前页码位置,无法激活active样式
  2. 模型方法调用错误:用统计方法get_count_pending_applications/get_count_open_applications去获取列表数据,应该调用对应的列表方法
  3. 初始化分页与获取页码的顺序颠倒,影响分页类对当前页的判断

模型代码问题

get_count_open_applications方法存在未闭合的if(empty($searchBook))语句,导致语法错误


修复方案

1. 修正控制器代码

$data['title'] = 'Dashboard ';
$configPendingDash = array();
$configOpenDash = array();

// 第一个分页(Pending)配置
$configPendingDash["base_url"] = base_url("Users/dashboard");
$configPendingDash["total_rows"] = $this->Users_model->get_count_pending_applications();
$configPendingDash["per_page"] = 5;
$configPendingDash["uri_segment"] = 3;

// 第二个分页(Open)配置 - 移除动态拼接的URI值
$configOpenDash["base_url"] = base_url("Users/dashboard");
$configOpenDash["total_rows"] = $this->Users_model->get_count_open_applications();
$configOpenDash["per_page"] = 5;
$configOpenDash["uri_segment"] = 4;

// 以下分页HTML结构配置保持不变
$configPendingDash['full_tag_open'] = '<div class="pagination">';        
$configPendingDash['full_tag_close'] = '</div>';        
$configPendingDash['first_link'] = 'First';        
$configPendingDash['last_link'] = 'Last';        
$configPendingDash['first_tag_open'] = '<li class="page-item"><span class="page-link">';        
$configPendingDash['first_tag_close'] = '</span></li>';        
$configPendingDash['prev_link'] = '&laquo';        
$configPendingDash['prev_tag_open'] = '<li class="page-item"><span class="page-link">';        
$configPendingDash['prev_tag_close'] = '</span></li>';        
$configPendingDash['next_link'] = '&raquo';        
$configPendingDash['next_tag_open'] = '<li class="page-item"><span class="page-link">';        
$configPendingDash['next_tag_close'] = '</span></li>';        
$configPendingDash['last_tag_open'] = '<li class="page-item"><span class="page-link">';        
$configPendingDash['last_tag_close'] = '</span></li>';        
$configPendingDash['cur_tag_open'] = '<li class="page-item active"><a class="page-link" href="#">';        
$configPendingDash['cur_tag_close'] = '</a></li>';        
$configPendingDash['num_tag_open'] = '<li class="page-item"><span class="page-link">';        
$configPendingDash['num_tag_close'] = '</span></li>';

$configOpenDash['full_tag_open'] = '<div class="pagination">';        
$configOpenDash['full_tag_close'] = '</div>';        
$configOpenDash['first_link'] = 'First';        
$configOpenDash['last_link'] = 'Last';        
$configOpenDash['first_tag_open'] = '<li class="page-item"><span class="page-link">';        
$configOpenDash['first_tag_close'] = '</span></li>';        
$configOpenDash['prev_link'] = '&laquo';        
$configOpenDash['prev_tag_open'] = '<li class="page-item"><span class="page-link">';        
$configOpenDash['prev_tag_close'] = '</span></li>';        
$configOpenDash['next_link'] = '&raquo';        
$configOpenDash['next_tag_open'] = '<li class="page-item"><span class="page-link">';        
$configOpenDash['next_tag_close'] = '</span></li>';        
$configOpenDash['last_tag_open'] = '<li class="page-item"><span class="page-link">';        
$configOpenDash['last_tag_close'] = '</span></li>';        
$configOpenDash['cur_tag_open'] = '<li class="page-item active"><a class="page-link" href="#">';        
$configOpenDash['cur_tag_close'] = '</a></li>';        
$configOpenDash['num_tag_open'] = '<li class="page-item"><span class="page-link">';        
$configOpenDash['num_tag_close'] = '</span></li>';

// 先获取当前页码,再初始化分页
$page = ($this->uri->segment(3)) ? $this->uri->segment(3) : 0;
$page2 = ($this->uri->segment(4)) ? $this->uri->segment(4) : 0;

// 初始化第一个分页
$this->pagination->initialize($configPendingDash);
$data["pendinglink"] = $this->pagination->create_links();

// 初始化第二个分页
$this->pagination->initialize($configOpenDash);
$data["openlink"] = $this->pagination->create_links();

// 修正模型方法调用:使用列表方法而非统计方法
$data['pending_applications'] = $this->Users_model->get_maximum_applications($configPendingDash["per_page"], $page);
$data['open_applications'] = $this->Users_model->get_open_applications($configOpenDash["per_page"], $page2);

$this->load->view('include/header', $data);
$this->load->view('include/sidetopbar', $data);
$this->load->view('user/dashboard', $data);

2. 修正模型代码

public function get_count_open_applications()
{
    // 移除未闭合的无效判断语句
    $this->db->where('col_status', 'OPEN');
    $this->db->from($this->tbl_loan_application);
    return $this->db->count_all_results();
}

public function get_count_pending_applications()
{
    $this->db->where('col_status', 'PENDING');
    $this->db->from($this->tbl_loan_application);
    return $this->db->count_all_results();
}

public function get_maximum_applications($limit, $start)
{
    $this->db->limit($limit, $start);
    $this->db->select('*');
    $this->db->from($this->tbl_loan_application);
    $this->db->where('col_status', 'PENDING');
    $this->db->order_by('loan_id','desc');
    return $this->db->get()->result();
}

public function get_open_applications($limit, $start)
{
    $this->db->limit($limit, $start);
    $this->db->select('*');
    $this->db->from($this->tbl_loan_application);
    $this->db->where('col_status', 'OPEN');
    $this->db->order_by('loan_id','desc');
    return $this->db->get()->result();
}

3. 视图代码补充

确保第二个表格的分页链接正确调用$openlink:

<div class="table-responsive">
    <table class="table table-sm table-hover table-bordered">
        <thead class="thead">
            <?php if(empty($open_applications)){
                    echo "<strong>Whoops!</strong> Looks like there's no open loans as of the moment.";
                } else {?>
            <tr>
                <!-- 表头字段根据需求调整 -->
                <th scope="col">Name</th>
                <th scope="col">Company Code</th>
                <th scope="col">Status</th>
            </tr>
            <?php } ?>
        </thead>
        
        <tbody>
            <?php foreach($open_applications as $row): ?>
            <tr>
                <td><?php echo $row->col_full_name; ?></td>
                <td><?php echo $row->col_comp_code; ?></td>
                <td>
                    <button class="btn btn-primary btn-xs">Open</button>
                    <button class="btn btn-link btn-xs">View</button>
                </td>
            </tr>
            <?php endforeach; ?>
        </tbody>
    </table>
    <p><?php echo $openlink; ?></p>
</div>

核心修复要点

  1. 分页URL配置:第二个分页的base_url无需拼接动态值,保持与第一个分页一致的基础URL,CI会通过uri_segment自动识别页码位置
  2. 初始化顺序:必须先获取当前页码,再初始化分页配置,确保分页类能正确判断当前页
  3. 方法调用匹配:统计方法用于获取总条数,列表方法用于获取分页数据,避免调用混淆
  4. 语法错误修复:清理模型中未闭合的无效代码

内容的提问来源于stack exchange,提问作者charlesultor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 08:55:17