Paginação fácil, rápida, simples
Galera.. segue minha contribuição
Depois de muito me estressar com paginação nos sistemas, sempre fazendo gambiarras, montei essa função simples, com ela só alteramos a chamada da função.
Qualquer problema ou sugestão posta ai
<style>
.paginacao {
padding: 7px;
text-align: center;
margin-left: -5px;
}
.paginacao a:link, .paginacao a:visited, .paginacao a:active {
border: 1px solid;
padding: 2px 5px 2px 5px;
border-top-color: #F90;
border-right-color: #F90;
border-bottom-color: #F90;
border-left-color: #F90;
margin: 4px;
color: #000;
text-decoration: none;
}
.paginacao a:hover {
border: 1px solid;
border-top-color: #F90;
border-right-color: #F90;
border-bottom-color: #F90;
border-left-color: #F90;
color: #000;
background: #FFE1C4 ;
}
.paginacao span.current {
border: 1px solid;
border-top-color: #F90;
border-right-color: #F90;
border-bottom-color: #F90;
border-left-color: #F90;
padding: 2px 5px 2px 5px;
font-weight: bold;
margin: 2px;
color: #FFF;
background: #F60;
}
</style>
<?php
/*
função de paginação
Desenvolvimento Edson
edson@mlml.com.br
$tabela = tabela que deseja ler os dados
$where = se tem alguma condição na paginação, exemplo de uso "where status = 'a' and cod = 1"
$itensPorPag = quantidade de resultados por pagina, se não informar, ele assume 10
$url = Url da pagina, até o numero dela
$htmli = html insetido antes de qualquer numero de pagina ex: <li class=\"li-paginacao\">
$htmlf = html insetido depois de qualquer numero de pagina ex: </li>
$pagAtual = variável da pagina atual
$mostraPrieUlt = mosta a primeira, e ultima pagina, informe 1 para "ativar"
$numLinks = numero de paginas antes e depois da pagina selecionada
$classeIni = Codigo html que fica antes de qualquer link ex: <div class=\"paginacao\">
$classeFim = Codigo html que fica depois de todos os links ex: "</div>"
$currentI = Codigo html que fica antes da pagina selecionada
$currentF = Codigo html que fica depois da pagina selecionada
*/
function paginacao($tabela, $where, $itensPorPag, $url, $htmli, $htmlf, $pagAtual, $mostraPrieUlt, $numLinks, $classeIni, $classeFim, $currentI, $currentF){
echo $classeIni;
if(!$pagAtual){
$pagAtual = 1;
}
if(!$itensPorPag){
$itensPorPag = 10;
}
if(!$tabela){
echo "<h1>informe a tabela</h1>";
exit;
}
$sql = mysql_query("select count(*) from $tabela $where")or die ("MySQL error: ".mysql_errno()." ".mysql_error());
if(mysql_num_rows($sql)){
$total = mysql_result($sql,0,0);
$totalPag = ceil($total/$itensPorPag);
if($totalPag > 1){
if($pagAtual > 1){
$anterior = $pagAtual-1;
echo "<a href=\"$url$anterior\">$htmli<$htmlf</a>";
}
if($mostraPrieUlt && $pagAtual > $numLinks+1){
echo "<a href=\"$url"."1"."\">$htmli"."1"."$htmlf</a>...";
}
// anteriores
for($i=$pagAtual-$numLinks;$i<=$pagAtual;$i++){
if($i != $pagAtual){
if($i >= 1){
echo "<a href=\"$url$i\">$htmli$i$htmlf</a>";
}
}
}
echo "$currentI$pagAtual$currentF";
// proximas
for($i=$pagAtual;$i<=$pagAtual+$numLinks;$i++){
if($i <= $totalPag){
if($i != $pagAtual){
echo "<a href=\"$url$i\">$htmli$i$htmlf</a>";
}
}
if($i == $totalPag){
$chegouFinal = 1;
}
}
}
}
if($mostraPrieUlt && !$chegouFinal){
echo "...<a href=\"$url$totalPag\">$htmli$totalPag$htmlf</a>";
}
if($pagAtual < $totalPag){
$proxima = $pagAtual+1;
echo "<a href=\"$url$proxima\">$htmli>$htmlf</a>";
}
echo $classeFim;
}
$itensPorPag = 15;
echo paginacao("hora", $where, $itensPorPag, "paginacao.php?pag=", $htmli, $htmlf, $pag, 1, 3, "<div class=\"paginacao\">", "</div>", "<span class=\"current\">", "</span>");
$limit = "limit ".ceil(($pag-1)*$itensPorPag).", $itensPorPag";
echo "<br /><br /> testando.....";
$sql = mysql_query("select * from hora $limit");
while($dados=mysql_fetch_array($sql)){
echo $dados[id]."<br />";
}
?>Discussão (3)
Carregando comentários...