manolegal 12 Denunciar post Postado Novembro 24, 2015 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
manolegal 12 Denunciar post Postado Novembro 25, 2015 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
(RNU) Ruan Silva 61 Denunciar post Postado Novembro 25, 2015 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
manolegal 12 Denunciar post Postado Novembro 25, 2015 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
(RNU) Ruan Silva 61 Denunciar post Postado Novembro 25, 2015 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
manolegal 12 Denunciar post Postado Novembro 25, 2015 Beleza Ruan. Funcionou certinho. Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites