Paginação PHP

Subodh Poudel 30 janeiro 2023
  1. Use a cláusula LIMIT com a instrução SELECT em SQL para paginar as linhas em PHP
  2. Adicione o recurso de navegação Previous e Next na paginação em PHP
Paginação PHP

Este artigo irá apresentar um método para realizar a paginação em PHP usando a cláusula LIMIT com a instrução SELECT em SQL. Usaremos a cláusula LIMIT para selecionar o número específico de linhas a partir de um índice específico para exibir como paginação.

Também demonstraremos outro método para adicionar o recurso de navegação Previous e Next na paginação PHP. Este método apenas adiciona o recurso adicional para navegar nas páginas correspondentes ao primeiro método.

Use a cláusula LIMIT com a instrução SELECT em SQL para paginar as linhas em PHP

Podemos usar a cláusula LIMIT com a instrução SELECT para especificar os primeiros n resultados a serem exibidos em uma página. Podemos fornecer o número da página na tag anchor como um método GET para navegar pelas páginas. Neste método, definimos o número de linhas a serem exibidas por página e recuperamos todas as linhas do banco de dados para calcular o número total de páginas necessárias. Podemos usar o array $_GET com a função isset() para obter o número da página solicitado pelo usuário.

Por exemplo, crie uma variável $results_per_page e armazene 2 nela. Use a função mysqli_num_rows() para encontrar o número de linhas no banco de dados e armazenar na variável $number_of_results. Use a função ceil() para determinar o número total de páginas necessárias para exibir as linhas. Divida a variável $number_of_results pela variável $results_per_page dentro da função ceil(). Use a variável superglobal $_GET com a função isset() para verificar se a variável page foi definida. Se não foi definido, defina a variável page para 1. Se a variável foi definida, atribua o valor à variável page. Subtraia a variável page por 1 e multiplique-a pela variável $this_page_first_result. Armazene a operação na variável $this_page_first_result. Escreva uma instrução SQL com a cláusula LIMIT como SELECT * FROM alpha LIMIT ' . $this_page_first_result . ',' . $results_per_page.. Execute a consulta e exiba os resultados. No final, crie um for loop para fazer um loop entre a variável page e $number_of_page. Dentro do loop, echo a tag anchor e escreve o valor do atributo href como index.php?page'.$page. Entre as tags anchor, escreva a variável page.

No exemplo abaixo, a tabela alpha no banco de dados contém seis linhas. Depois de executar a paginação, duas linhas são exibidas por página. A função ceil() determina o número total de páginas necessárias para mostrar as linhas. Inicialmente, a variável $page não está definida, então a página começa na página 1. A variável $this_page_first_result determina o número da página em que o usuário está atualmente. As variáveis ​​$this_page_first_result denota a primeira linha da página. A variável $results_per_page denota o número de resultados por página. A seção de saída exibe a página index.php. Quando clicado na página 2, ele produz as próximas duas linhas do banco de dados.

Código de exemplo:

#php 7.x
<?php
$number_of_pages = ceil($number_of_results/$results_per_page);
if (!isset($_GET['page'])) {
    $page = 1;
} else {
    $page = $_GET['page'];
}
$this_page_first_result = ($page-1)*$results_per_page;
$sql='SELECT * FROM alpha LIMIT ' . $this_page_first_result . ',' . $results_per_page;
$result = mysqli_query($con, $sql);
while($row = mysqli_fetch_array($result)) {
    echo $row['id'] . ' ' . $row['value']. '<br>';
}
for ($page=1;$page<=$number_of_pages;$page++) {
    echo '<a href="index.php?page=' . $page . '">' . $page . '</a> ';
}
?>

Resultado:

1 A 
2 B 
1 2 3

Adicione o recurso de navegação Previous e Next na paginação em PHP

Podemos adicionar alguns trechos de código adicionais ao exemplo de código no primeiro método para fornecer o recurso de navegação Previous e Next na paginação. Podemos aumentar e diminuir a variável $page em 1 para apontar para a página anterior e a próxima. Podemos usar as variáveis ​​incrementadas e decrementadas na tag anchor para obter os recursos Next e Previous.

Por exemplo, crie duas variáveis, $prev e $next. Subtraia a variável $page por um e atribua a operação à variável $prev. Da mesma forma, adicione um à variável $page e atribua-o à variável $next. Faça eco de uma tag anchor dizendo Previous logo antes do loop for dos números das páginas. Escreva o valor index.php?page=' . $prev . no atributo href da tag anchor. Da mesma forma, faça outra tag anchor para Next usando a variável $next como o valor de page no atributo href.

Na seção de saída abaixo, ele mostra a segunda página. Clicar em Previous leva à primeira página e clicar em Next, leva para a terceira página.

Código de exemplo:

# php 7.x
<?php
$prev = $page -1;
$next = $page +1;
echo ' <a href="index.php?page=' . $prev . '"> Previous </a> ';
for ($page=1;$page<=$number_of_pages;$page++) {
    echo '<a href="index.php?page=' . $page . '">' . $page . '</a> ';
}
echo ' <a href="index.php?page=' . $next . '"> Next </a> ';
?>

Resultado:

3 C 
4 D 
Previous 1 2 3 Next
Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn