Logo Hardware.com.br
marcos andrade22
marcos andra... General de Pijama Registrado
3.6K Mensagens 333 Curtidas

Sistema de páginação em php+PDO

#1 Por marcos andra... 30/09/2013 - 14:33
Como havia prometido estarei mostrando neste artigo como montar um sistema de paginação com PDO.

Irémos utilizar a mesma classe de conexão descrita neste tópico então não entrarei em detalhes sobre ela aqui:
https://www.hardware.com.br/comunidade/primeiros-pdo/1319217/

Vamos começar com nosso código:
A primeira coisa a fazer é incluir a página que contém a classe

require_once('conect_pdo.php'); //assumindo que o nome do arquivo da classe seja conect_pdo.php e esteja na mesma página



Vamos começar com o código php, vou comentar ele para ficar de mais fácil compreensão:



<?php
// quantidade de resultados a serem exibidos por página
$quantidade = 20;

// Verificando se existe $_GET['pagina'], caso não exista atribuimos o valor 1 a ele
$pagina = (isset($_GET['pag']) ? (int)$_GET['pag'] : 1);

// Fazendo um conta para saber apartir de qual registro ira começar a paginação
$inicio = ($quantidade * $pagina) - $quantidade;


//conexao com PDO para pegar os valores a serem exibidos em cada página repare no atributo LIMIT
$con_pdo = Conexao::getInstance();
// monta a consulta
$sql_pag = $con_pdo->prepare("SELECT * FROM sua_tabela ORDER BY id DESC LIMIT $inicio, $quantidade&quot;
//executa a consulta
$sql_pag->execute();
// total de resultados de uma página
$total_row_result_pag = $sql_pag->rowCount();


// Agora precisamos verificar a quantidade de registros totais da tabela
$sql = $con_pdo->prepare("SELECT * FROM sua_tabela ORDER BY id DESC&quot;
// executando a query em PDO
$sql->execute();
//recuperamos o total de registros e armazenamos na variavel $resultados_total
$resultados_total = $sql->rowCount();

// armazenando o valor da página atual
$total_pagina = ceil($resultados_total/$quantidade);

// criando as variaveis para os links
$prox = $pagina + 1;
$ant = $pagina - 1;
$penultima = $total_pagina -1;
$adjacentes = 2;

//criando um laço para exibir os resultados
while($objeto = $sql_pag->fetch(PDO::FETCH_OBJ)) {
$id = $objeto->id;
$nome = $objeto->Nome;

echo $id.'<br>'.$nome;
}

// exibindo os links de paginação
if($total_pagina > 1 ){
// Criando o link para a página 1, deixei uma classe para mostrar onde pode estar alterando pelo css
echo '<a class="button-paginacao" href="?pag=1">Primeira Página</a> - ';
// criando uma repetição para exibição dos links
for($i = 1; $i <= $total_pagina; $i++){
// verificamos se esta é a página atual, se for tiramos o link
if($i == $pagina){
echo '<span class="num-paginacao-active">';
echo $i . " ";
echo '</span>';
} else {
// se não for colocamos o link
echo '<a class="num-paginacao" href="?pag='.$i.'">'.$i.' </a>';
}
}




// Criando link para a ultima página


echo ' <a class="button-paginacao" href="?pag='.$total_pagina.'">Última Página</a>';
// Fim da paginação
} // fim do if
//// fim da paginação



Espero que tenha conseguido deixar o código claro, qualquer dúvida é só postar ai.
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal