【问题标题】:Codeigniter Pagination not working correctly with db queryCodeigniter 分页无法与 db 查询一起正常工作
【发布时间】:2014-02-01 06:20:58
【问题描述】:

我没有成功将分页与我的选择结果与 codeigniter 集成。

我开始使用 codeigniter,但无法正确进行分页。链接是正确创建的,它们没有限制,而且链接不会去任何地方。以下是所有代码

型号

public function listProvas($i = 0, $nRows = 0){
    //return $data['provas'] = $this->db->get('provas')->result_array();
    return $this->db->query('SELECT `idProva` , `provas`.`titulo` AS `nome_prova` , `provas`.`ativo` , `atividades`.`idAtividade` , `modulos_x_tarefas`.`fkModulo` , `modulos`.`titulo` AS `modulo` , `disciplinas`.`disciplina`
                             FROM `provas` , `atividades` , `modulos_x_tarefas` , `modulos` , `disciplinas`
                             WHERE `provas`.`fkAtividade` = `atividades`.`idAtividade`
                             AND `atividades`.`idAtividade` = `modulos_x_tarefas`.`fkTarefa`
    ')->result_array();
}

控制器

public function index($i = 0){
    $this->load->model('provasmodel');

    $this->load->library('pagination');
    $this->load->library('table');

    $nRows = 50;
    $config['base_url'] = 'http://URL/painel/listaprovas/';
    $config['total_rows'] = $this->db->get('provas')->num_rows();
    $config['per_page'] = $nRows;
    $config['num_links'] = 20;
    $config['full_tag_open'] = '<ul class="pagination">';
    $config['full_tag_close'] = '</ul>';
    $config['next_link'] = '&gt;';
    $config['next_tag_open'] = '<li>';
    $config['next_tag_close'] = '</li>';
    $config['prev_link'] = '&lt;';
    $config['prev_tag_open'] = '<li>';
    $config['prev_tag_close'] = '</li>';


    $dados['provas'] = $this->provasmodel->listProvas($i, $nRows);
    $dados['total'] = count($this->provasmodel->listProvas($i, $nRows));
    $this->load->library('pagination');

    $datapag['records'] = $this->db->get('provas', $config['per_page'], $this->uri->segment(3));

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

    $data['provas'] = $this->provasmodel->listProvas();
    $this->template->load('templates/template_painel', 'painel/lista_provas', $data, $datapag);
}

查看

<?php foreach ($provas as $data): ?>
        <tr>
          <td><?php echo $data['idProva']; ?></td>
          <td><?php echo $data['nome_prova']; ?></td>
          <td><?php echo $data['modulo']; ?></td>
          <td><?php echo $data['disciplina']; ?></td>
          <td>numero</td>
        </tr>
        <?php endforeach; ?>
      </tbody>
    </table>

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

【问题讨论】:

标签: php codeigniter templates pagination codeigniter-2


【解决方案1】:

您在分页配置中缺少 uri_segement 选项。

$config['uri_segment'] = 3;

根据您的项目 url 更改数字。

uri_segment 用于page number 而不是per page count

分页功能会自动确定 URI 的哪个段包含页码。如果你需要不同的东西,你可以指定它。

【讨论】:

    【解决方案2】:

    代码中有 2 个错误,一个是我的 SQL 调用没有设置限制。 二、base url 没有调用 index 方法。

    感谢您的提示。

    型号

     public function listProvas($i = 0, $nRows = 0){
    //return $data['provas'] = $this->db->get('provas')->result_array();
    return $this->db->query('SELECT `idProva` , `provas`.`titulo` AS `nome_prova` , `provas`.`ativo` , `disciplinas`.`disciplina`
                             FROM `provas` , `atividades` , `modulos_x_tarefas` , `modulos` , `disciplinas`
                             WHERE `provas`.`fkAtividade` = `atividades`.`idAtividade`
                             AND `atividades`.`idAtividade` = `modulos_x_tarefas`.`fkTarefa´ LIMIT '.$i.','.$nRows.'
    
    ')->result_array();
    

    控制器

    public function index($i = 0, $nRows = 100){
        $this->load->model('provasmodel');
        $this->load->library('pagination');
    
        $config['base_url'] = 'http:/url/painel/listaprovas/index';
        $config['total_rows'] = $this->db->get('provas')->num_rows();
        $config['per_page'] = $nRows;
        $config['num_links'] = 20;
        $config['full_tag_open'] = '<ul class="pagination">';
        $config['full_tag_close'] = '</ul>';
        $config['next_link'] = '&gt;';
        $config['next_tag_open'] = '<li>';
        $config['next_tag_close'] = '</li>';
        $config['prev_link'] = '&lt;';
        $config['prev_tag_open'] = '<li>';
        $config['prev_tag_close'] = '</li>';
        $data['provas'] = $this->provasmodel->listProvas($i, $nRows);
        $data['total'] = count($this->provasmodel->listProvas($i, $nRows));
        $datapag['records'] = $this->db->get('provas', $config['per_page'], $this->uri->segment(3));
    
        $this->pagination->initialize($config);
        $data['pagination'] = $this->pagination->create_links();
    
        $data['provas'] = $this->provasmodel->listProvas($i, $nRows);
        $this->template->load('templates/template_painel', 'painel/lista_provas', $data);
    }
    

    }

    查看

    <?php foreach ($provas as $data): ?>
            <tr>
              <td><?php echo $data['idProva']; ?></td>
              <td><?php echo $data['nome_prova']; ?></td>
              <td><?php echo $data['modulo']; ?></td>
              <td><?php echo $data['disciplina']; ?></td>
              <td>numero</td>
              <?php
                if ($data['ativo'] == '1') {
                  echo '<td class="ativo">Ativo</td>';
                }else{
                  echo '<td class="inativo">Inativo</td>';
                }
              ?>
              <td><a href="/painel/prova/<?php echo $data['idProva']; ?>" class="glyphicon glyphicon-pencil"></a></td>
            </tr>
            <?php endforeach; ?>
    
          </tbody>
        </table>
    
    
            </div><!--table-responsive--
      <?php echo $pagination; ?>
    

    【讨论】:

      猜你喜欢
      • 2014-03-22
      • 1970-01-01
      • 2013-03-07
      • 2017-11-27
      • 1970-01-01
      • 1970-01-01
      • 2017-11-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多