Como criar paginação PHP com mysql?

Paginação PHP MySQL

De uma maneira simples para explicar é usado o mysqli

Veja o exemplo abaixo:



<?php //Inicia o código PHP.
    include "conectar.php"; //Chama o arquivo com a conexão ao banco.
    $p = $_REQUEST["p"]; // Pegar a página atual por GET.
    // Verifica se a variável tá declarada, senão deixa na primeira página como padrão.
    if(isset($p)) { $p = $p; } else { $p = 1; }
    // Defina aqui a quantidade máxima de registros por página.
    $qnt = 20; //No caso 20 por página.
    // O sistema calcula o início da seleção, calculando:
    // (página atual * quantidade por página) - quantidade por página
    $inicio = ($p*$qnt) - $qnt;

     // Seleciona no banco de dados com o LIMIT indicado pelos números acima.
    $sql_select = "select * FROM tabela limit $inicio, $qnt";
    // Executa a query com mysqli.
    $sql_query = mysqli_query($conn,$sql_select);
    // Faz uma nova seleção no banco de dados semelhante a anterior, mas desta vez sem LIMIT, para pegarmos o número total de registros.
    $sql_select_all = "select * FROM tabela";
    // Executa a query das seleções acima.
    $sql_query_all = mysqli_query($conn,$sql_select_all);
    // Gera uma variável com o número total de registros no banco de dados.
    $total_registros = mysqli_num_rows($sql_query_all);
    $num_rows = ($total_registros);
    // Gera outra variável, desta vez com o número de páginas que será precisa.
    // O comando ceil() arredonda "para cima" o valor.

    $pags = ceil($total_registros/$qnt);
     echo ' //Inicia o texto que será impresso na tela.
        <div id="dados">//Inicia uma div com a class dados.
                 <table> //Inicia uma tabela.
                    <tr> //Cria a linha da tabela.
                        <th></th>//Espaço vazio pois é a primeira linha e primeira coluna.
                        //Cria o título do primeiro campo.
                        <th class="titulo">C&oacute;digo</th>
                        //Cria o título do segundo campo.
                        <th class="titulo">Descri&ccedil;&atilde;o</th>
                     </tr>';//Fecha a linha dos títulos.
                    // Cria um while para pegar as informações do BD para os itens.
                    while ($row = $sql_query->fetch_array(MYSQLI_ASSOC)) {
                        echo '//Inicia a tabela com dados dinâmicos.
                        <tr>
                            //Chama o campo código.
                            <td class="item" style="text-align:center; padding:2px; vertical-align: middle; display: ">' . $row['codigo'] .'</td>
                            //Chama o campo descrição.
                            <td class="item" style="text-align:center; padding:5px;">' . $row['descricao'] .'</td>
                    </tr>';
                  }//Fecha o while.
?>//Fecha o PHP.
                </table>
        </div>//Acima fecha a tabela e aqui fecha a div.
<?php //Abre novamente o PHP.
    if($pags > 1){ //Verifica se tem mais de uma página.
        // Número máximos de botões de paginação.
        $max_links = 3;
        // Exibe o primeiro link "primeira página", que não entra na contagem acima(3).
        echo '<a href="https://diretoaoponto-tech.com.br?p=1" target="_self">primeira p&aacute;gina</a> ';
        // Cria um for() para exibir os 3 links antes da página atual.
        for($i = $p-$max_links; $i <= $p-1; $i++) {
            // Se o número da página for menor ou igual a zero, não faz nada.
            if($i >= 1){//Então chama o link se for 1 ou maior.
                //Cria o link com o número do indice.
                echo '<a href="https://diretoaoponto-tech.com.brp='.$i.'" target="_self">'.$i.'</a> ';
            }//Fecha o if.
        }//Fecha o for.
        // Exibe a página atual, sem link, apenas o número
        echo $p." ";
        // Cria outro for(), desta vez para exibir 3 links após a página atual.
        for($i = $p+1; $i <= $p+$max_links; $i++) {
            // Verifica se a página atual é maior do que a última página. Se for, não faz nada.
            if($i > $pags) {
            //faz nada.
            }
            // Se tiver tudo Ok gera os links.
            else {
                echo '<a href="https://diretoaoponto-tech.com.br?p='.$i.'" target="_self">'.$i.'</a> ';
            }
        }
        // Exibe o link "última página"
        if($pags <= 0){
            $i=1;
        }
        else{
            $i=$pags;
            }
        echo '<a href="https://diretoaoponto-tech.com.br?p='.$i.'" target="_self">&uacute;ltima p&aacute;gina</a> ';   
    }
    echo '</div>';
?>
</div>//Fecha a div inicial.

Pronto tem aí um exemplo de paginação com PHP simples e funcional. O html pode ser estilizado com o css como mostra esse link: CSS para paginação.

Quer acompanhar as novidade do site?

Leia mais em: ww.w3schools.com/bootstrap/bo...

Como criar paginação PHP com mysql?

Última atualização: 2023-02-15

Palavras-Chaves

Quer acompanhar as novidade do site?
Veja também:

Como embutir código PHP em arquivos CSS?

manipular CSS com PHP

Como remover espaços em branco no php?

remover espaços php

Como colocar ícone no site?

Colocar icone no site

Como aplicar estilo css nos botões de paginação?

CSS para paginação

Como fazer um select por cpf com ou sem ponto?

select cpf com ou sem ponto

Como fazer para o link abrir em nova aba como tag a html?

tag a abrir em nova aba

Web Stories