2014-01-13 69 views
0

我没有成功地将分页与我的选择与codeigniter的结果集成在一起。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(); ?> 
+0

可以添加你所得到的链接? –

+0

corse,@kumar_v ...“http:// url/painel/listaprovas/50”,“http:// url/painel/listaprovas/100”....“http:// url/painel/listaprovas/200“ – user1524770

+0

这里50,100,200是页码还是每页数? –

回答

0

你缺少在分页配置uri_segement选项。

$config['uri_segment'] = 3; 

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

uri_segment用于​​而不是per page count

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

0

代码中有2个错误,其中一个没有对我的SQL调用设置限制。 二,基础网址未调用索引方法。

感谢您的提示。

型号

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; ?>