sábado, 31 de maio de 2008

Paginação com PHP

Este código é utilizado para fazer paginação, utilizando MySQL (sintaxes SQL) e PHP. Coloque no início do código PHP.


# --- Início dos critérios para a paginação.
# Quantidade de itens por página.
$numReg = 20;

# Se não foi setada a página, assume-se como 0.
if (!isset($pg))
{
$pg = 0;
}

# De onde começa a seleção na base de dados.
$inicial = $pg * $numReg;

# Faz o SELECT na base de dados.
$cPaginacao = "SELECT * from tabela LIMIT $inicial, $numReg";
$qPaginacao = mysql_query($cPaginacao);

$cTotal = "SELECT * FROM tabela";
$totalBusca = mysql_num_rows(mysql_query($cTotal));
# --- Fim dos critérios para a paginação.

A segunda parte é a paginação propriamente dita. Inclua o código abaixo na área em que deseja que apareça a numeração. A estrutura que eu coloquei - os números dentro de uma tabela - foi só para manter o alinhamento vertical, pode ser removida sem problemas ou adaptada às necessidades.

# --- Início da paginação.
$quantPg = ceil($totalBusca/$numReg);
$quantPg++;
echo "<table border='0' cellspacing='0' cellpadding='0'>";
echo "<tr valign='middle'>";
echo "<td>Páginas </td>";
echo "<td>";

# Verifica se está na primeira página, se não estiver,
# libera o link para Anterior.
if ( $pg > 0)
{
echo "<a href=".$PHP_SELF."?pg=".($pg-1).">";
echo "Anterior";
echo "</a>";
}
echo "</td>";
# Faz aparecer os números das página entre o ANTERIOR e PRÓXIMO.
echo "<td>";
for($iPg = 1; $iPg < $quantPg; $iPg++)
{
# Verifica a página que o navegante está e retira o link
# do número para identificar visualmente.
if ($pg == ($iPg-1))
{
echo " [$iPg] ";
} else
{
$iPg2 = $iPg-1;
echo " <a href=".$PHP_SELF."?pg=$iPg2>";
echo "<b>$iPg</b>";
echo "</a> ";
}
}
echo "</td>";
echo "<td>";
# Verifica se está na ultima página, se não estiver ele
# libera o link para próxima.
if (($pg+2) < $quantPg)
{
echo "<a href=".$PHP_SELF."?pg=".($pg+1).">";
echo "Próxima";
echo "</a>";
}
echo "</td>";
echo "</tr>";
echo "</table>";
# --- Fim da paginação.

Não foi aplicada nenhuma folha de estilo aos links ou números das páginas. Sei que você pode fazer isso por conta própria! Após implementada a paginação, você adapta ela visualmente às suas necessidades.

0 comentários: