Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

DLSeken

Paginação em PHP

Recommended Posts

Bom dia,

 

encontrei um exemplo na internet de um "sistema" de paginação. Resolvi fazer do mesmo modo que a pessoa porém, estou tendo alguns problemas.

 

Segue o código abaixo:

        //número de registros por página
        $por_pagina = 3;
        $init = ($_GET['pagina']-1) * $por_pagina;
        
        $conta_paginas = contaServidores---ome($conexao, $cpf);
        
        $result_total = $conta_paginas->fetch(PDO::FETCH_ASSOC);
        
        $resultado_total = $result_total[count];
        
        $num_paginas = ceil($resultado_total/$por_pagina);

Na variável $init está retornando o valor - 3. Se eu atribuir o $_GET['pagina '] = 1 para pegar a primeira página ele traz os dados corretos. Entretanto quando vou passar para segunda página através desse código:

    <div>
        <?php for($i = 1 ; $i <= $num_paginas; $i++){?>
            <a href="resultadoBusca---ome.php?pagina=<?php echo $i ?>"><?php echo $i ?></a>
        <?}?>
    </div>

ele não lista os próximos resultados e parece que encera a sessão de login fazendo com que eu tenha que logar novamente no sistema.

 

Alguém poderia me dar algum direcionamento?

 

Att

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro verifique se $_GET['pagina'] está setado e faça o tratamento, isto resolve o problema do -3.

$pagina = (isset($_GET['pagina']))?$_GET['pagina']:1;
$init = ($pagina-1) * $por_pagina;

Quanto ao segundo problema, como está a sua query que faz o filtro (LIMIT ...)?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro verifique se $_GET['pagina'] está setado e faça o tratamento, isto resolve o problema do -3.

$pagina = (isset($_GET['pagina']))?$_GET['pagina']:1;
$init = ($pagina-1) * $por_pagina;

Quanto ao segundo problema, como está a sua query que faz o filtro (LIMIT ...)?

 

Realizei a modificação acima e agora está pegando somente os 3 primeiros registros quando tento passar de página não traz nada.

 

O SQL está assim:

SELECT S2.nm_servidor, S3.nr_matricula, S3.cd_departamento, S1.dt_admissao, S1.dt_demissao,
       S3.cd_especialidade, ds_cargo
FROM sch_gp.tb_vinculos_servidor S1
INNER JOIN tb_servidor S2 on S1.nr_cpf_servidor = S2.nr_cpf_servidor
INNER JOIN sch_decom.tb_servidor S3 on S2.nr_cpf_servidor = S3.nr_cpf and
S3.nm_servidor = S2.nm_servidor and S3.nr_matricula = S1.nr_matricula
WHERE S2.nr_cpf_servidor = '{$nr_cpf}' order by dt_admissao
LIMIT '{$por_pagina}' OFFSET '{$init}'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dá um echo no $_GET['pagina'] e no $init para ver o que aparece a partir da segunda página...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dá um echo no $_GET['pagina'] e no $init para ver o que aparece a partir da segunda página...

 

 

Ele pega o $_GET['pagina'] com o valor 2 e o $init com o valor 3;

Compartilhar este post


Link para o post
Compartilhar em outros sites

É o esperado... você está usando que SGBD?

 

Estou usando postgresql. Parece que ele não executa as minhas funções. Quando troca de página parece que as funções não são executadas de novo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou mover para a área do SGBD, pois em tese a parte do PHP está ok.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou mover para a área do SGBD, pois em tese a parte do PHP está ok.

 

Última dúvida. Será que isso pode estar acontecendo por eu fazer uma consulta em uma página anterior e listar os dados na página subsequente?

 

Tenho um comboBox que retorna todas as pessoas, o usuário escolhe a pessoa que ele quer fazer a pesquisa e é redirecionado outra página (a de paginação) com os dados.

 

PS: acabei de dar um print_r na meu sql e quando vai para 2º página a variável que eu passava como parâmetro (CPF) parece estar vazia.

 

eu pego o cpf da página anterior da seguinte maneira:

 

$cpf = $_POST['nr_cpf_servidor'];
Alguma sugestão ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.