Sempre que se tem uma quantidade enorme de itens a serem listados e se colocar tudo em uma mesma página deixa o layout quebrado e uma leitura chata, usamos a paginação dos dados...
Imagine que a Ford queira listar, em seu site, os dados de TODOS os seus funcionários. Se fossemos colocar tudo em uma página só, além dos problemas citados acima teriamos uma péssima performance no sistema.
Bem, mãos à obra...
Vamos definir que a tabela EMPREGADOS tenha a seguinte estrutura:
| Campo | Tipo |
|---|
| id | INT |
| nome | VARCHAR |
| nascimento | DATE |
| admissao | DATE |
Primeiramente precisamos definir os valores necessários para fazer a páginação... São eles: Página atual, Itens por página, Quantidade de registros e os registros (lembrando que eu vou usar o PEAR::DB e que o parametro p na url que define a página atual).
//...
// Definindo a pagina atual
$pagina =
(isset($_GET['p']) &&
(int
) $_GET['p']) ?
$_GET['p'] :
1;
// Definindo intens por pagina
$itens_pp = 20;
// Definindo o registro inicial.
$item_inical = $itens_pp * ($pagina - 1);
// Total de registros
$total_regs = $db->getOne("SELECT COUNT(*) FROM EMPREGADOS");
if (DB::isError($total_regs)) {
.$total_regs->toString().")", E_USER_ERROR);
}
// Registros
$empregados = $db->getAll(
'SELECT id, nome, nascimento, admissao
FROM EMPREGADOS ORDER BY nome LIMIT ?, ?',
array($item_inical,
$itens_pp)
);
if (DB::isError($empregados)) {
.$empregados->toString().")", E_USER_ERROR);
}
// Paginacao ..........
$total_pg =
floor($total_pg /
$itens_pp);
$primeira_pg = $anterior_pg = $proxima_pg = $ultima_pg = '';
if ($pagina > 1) {
$primeira_pg = '<a href="?p=1">Primeira</a> | ';
$anterior_pg = '<a href="?p='.($pagina-1).'">Próxima</a> | ';
}
if ($pagina == $total_pg) {
$proxima_pg = '<a href="?p='.($pagina+1).'">Próxima</a> | ';
$ultima_pg = '<a href="?p='. $total_pg .'">Última</a>';
}
for ($i = 1; $i <= $total_pg; $i++) {
$meio[] = '<a href="?p='.$i.'">'.$i.'</a>';
}
$meio_pg =
join(' | ',
$meio);
$paginacao = "$primeira_pg $anterior_pg $meio_pg $proxima_pg $ultima_pg";
// ...
Bem, agora que ja temos todas as variáveis preenchidas perfeitamente, vamos ao html...
<html>
...
<table>
<tr>
<th>Nome<th>
<th>Data de Nascimento<th>
<th>Data de Admissão<th>
</tr>
<?php
foreach($empregados as $empreg) {
echo "<td>{$empreg['nome']}</td>
}
?>
</table>
<div align="center">
</div>
...
</html>
Agora é contigo... sua imaginação é o limite...
Como eu fiz todo esse código de cabeça sem testar, se alguem achar algum erro, avisa...
Outra coisa, quem não conhece o PEAR:DB, não sabe o que está perdendo... Clique aqui correndo e leia este artigo introdutório .
Até a próxima...