mySQL: paginação de registros

Veja como fazer paginação de registros com mysql

Por | @oficinadanet Programação
Para melhor explicar como paginar registros, ainda uma dúvida para muitas pessoas, aí vai um artigo.

Gostaria de abordar algumas questões iniciais.

A condição "LIMIT inicio,termino" do MySQL, funciona da seguinte maneira:

SELECT * FROM tabela LIMIT 0,5


Acima o MySQL vai capturar os registros da linha 0 e vai avansar seu cursor 5 linhas, o que resultará na captura das linhas 0, 1, 2, 3 e 4.

SELECT * FROM tabela LIMIT 5,5


Acima o MySQL vai capturar os registros da linha 5 e vai avansar seu cursor 5 linhas, o que resultará na captura das linhas 5, 6, 7, 8 e 9.

Entendendo:
"LIMIT inicio,termino", na variável 'INICIO' eu só preciso informar o ponto de partida, e na variável 'TERMINO' eu só preciso informar o número de linhas que quero avançar a partir de 'INICIO'.

Agora vamos começar:

1º - Precisamos informar quantas linhas/registros do banco queremos mostrar, sendo assim;

pag_views = 10;
?>


2º - Agora vamos a um pequeno processo para evitar a página 0, isso é para que visualmente não fique confusa uma interpretação do número da página:

If (!$pagina) {
$pagina = 1;
} else {
$pagina = $pagina;
}
?>


3º - Vamos calcular o valor da variável $inicio, essa variável é quem vai dizer onde o MySQL vai começar a capturar linhas;

$mat = $pagina -1; //ASSIM INICIAREMOS DA LINHA ZERO DO BANCO
$inicio = $mat * $pág_views;
?>


Entendendo: Esse calculo é feito em 2 partes.
Vamos dizer que você está na 1ª página, sendo assim, $pagina = 1;
Para calcular $início devemos fazer o primeiro calculo,
$mat = $pagina -1
$mat = 1 -1
$mat = 0
Sendo assim,
$inicio = $mat * $pág_views
$inicio = 0 * 10
$inicio = 0

4º - Seleção de dados

$sql = "SELECT * FROM tabela";
$query = mysql_query($sql);
?>


5º - Limitando a seleção

$limita = "$sql LIMIT $inicio,$pág_views";
$executa = mysql_query($limita);
?>


Aceitando o exemplo acima do calculo da variável $inicio, começaremos da linha 0 e vamos avançar o cursor até $pag_views depois de $inicio.
Resultará nas linhas 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9.

6º - Obtendo o número de linhas afetadas pela consulta, isso será útil para calcularmos quantas páginas terão esta consulta.

$linhas = mysql_num_rows($query);
?>


Notem que executei $query, que seleciona todos os registros desta condição.

7º - Calculando o total de páginas

$paginas = $linhas / $pág_views;
?>


Entendendo:
Supondo que $query resultou em 7.570
$paginas = $linhas / $pág_views
$paginas = 7570 / 10
$paginas = 757
Portanto teremos 757 páginas

8º - Criando os valores para o botão de voltar e para o botão de próxima página

$volta = $pagina -1;
$próxima = $pagina +1;
?>


9º - Mostrando o resultado limitado

while ($dado = mysql_fetch_array($executa)) {
echo $dado[nome_do_campo];
}
?>


10º - Exibindo o link para voltar uma página

If ($volta>0) echo "Volta";
?>


Entendendo:
Vamos dizer que estamos na página 1, portanto $volta = 0, se volta for maior que 0, mostra o botão VOLTAR

11º - Exibindo o botão para cada uma das páginas

For ($i = 0; $i <= $paginas; $i++){ //REPETE ATÉ QUE SE ACABEM AS PAGINAS
$pag =  $i +1; //EVITA A PÁGINA
ZERO echo "$pág"; //MOSTRA O BOTÃO PARA A PÁGINA
}
?>


12º - Exibindo o botão para avançar uma página se ela existir.

If ($pagina<$paginas) echo "Proxima";
?>


Quem estiver com mais dúvidas acesse meu site e cliquem no suporte on-line, terei o maior prazer em explicar mais... SoftwebSite .

Um grande abraço

Mais sobre:
Share Tweet
Recomendado
Comentários
Carregar comentários
Destaquesver tudo