Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Gastro

Paginação fácil, rápida, simples

Recommended Posts

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 />";
}

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara, acho que dava para simplificar mais..

 

http://code.imasters.com.br/index.php?/topic/93-paginacao-com-ordenacao-nos-headers-das-colunas/

 

vou rodar o teu codigo, para ver oque ele faz.

Compartilhar este post


Link para o post
Compartilhar em outros sites

codigo to tentando entender, mas essa parte que está comentada , eu devo altera-la?

e essa table hora?? nao entendi o pq dela

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.