Ir para conteúdo

POWERED BY:

Arquivado

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

manolegal

Problema com Paginação

Recommended Posts

Olá amigos

Estou iniciando com paginação PHP. A partir de um modelo, desenvolvi o código.

Porém os 03 primeiros registros não estão aparecendo, bem como a Página 1 não está mostrando nada.

Estou mostranto 03 registros por página, porém ao ir trocando de página, vai aumentando o número de registros mostrados, ao invés de mostrar 03 novos registros, ou seja, na página 2 mostra 03 registros, na página 3 mostra 06 registros e assim por diante.

Meu código:

<thead>
<tr>
<th>Seq</th>
<th>Nome</th>
</tr>
</thead>

<?php
$limite_por_pagina = 3;

    // Busco o total de registros que serão listados
    $Sql_total = "SELECT meu campo
FROM minha tabela";
$Resultado_total = executa($Sql_total);
$total_registros_listados = pg_num_rows($Resultado_total); // Retorna o valor de 27 registros

$numero_paginas = ceil($total_registros_listados / $limite_por_pagina);

$pg = (isset($_GET["pg"])) ? (int)$_GET["pg"] : 1;

$start = ($pg - 1) * $limite_por_pagina;

     // Busco dados a serem mostrados na tabela
     $Sql = "SELECT meus campos
 FROM minhas tabelas
 ORDER BY pessoas.nome ASC
 LIMIT $start OFFSET $limite_por_pagina";
     $Resultado = executa($Sql);  
     $total_registros = pg_num_rows($Resultado);  
     while ($linha = pg_fetch_array($Resultado)) {
        $meu_campo = $linha["meu_campo"];

?>

<tbody>
<tr>
<td><?php echo "$meu_campo"; ?></td>
</tr>
</tbody>

<?php } ?>

</table>

<?php 
    
if ($numero_paginas > 1 && $pg <= $numero_paginas){
    for ($i = 1; $i <= $numero_paginas; $i++){
        echo "<a href='?pg=$i'>$i </a>";
    }
}    

?>

No aguardo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentei alterar

$start = ($pg - 1) * $limite_por_pagina;

Por

$start = ($limite_por_pagina * $pg) - $limite_por_pagina;

Porém continua o mesmo problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O OFSSET indica o inicio da leitura, então você ta pedido pra iniciar do 3 registro. Mude o offset pra uma vírgula apenas.

LIMIT $start, $limite_por_pagina;

e mantenha a alteração que você citou no post #2 :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema é que se uso com vírgula apenas, mostra mensagem de erro do Postgre:

Warning: pg_query(): Query failed: ERROR: LIMIT #,# syntax is not supported LINE 12: LIMIT 0, 3 ^ HINT: Use separate LIMIT and OFFSET clauses. in /home/

Compartilhar este post


Link para o post
Compartilhar em outros sites

então inverta os dados do limt e do offset. O limit define o limite máximo de registros e o ofsset o inicio... basta inverter :

 

LIMIT $limite_por_pagina OFFSET $start

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.