Após um desenvolvedor ter me pedido ajuda em uma consulta mysql em que gerava um count no meio de um join e consequentemente, pesando muito a query, decidir pegar um velho script de paginação em php que deve ajudar muito.
Lembrando que count no meio do Join vai pesar. ;-)
Por isso essa dica esta em mysql.
==> Este código deve ser salvo em um arquivo chamado paginacao.php este arquivo possui os procedimentos geral do controle da paginação.
<?php
$quant_pg = ceil($quantreg/$numreg);
$quant_pg++;
// Verifica se esta na primeira página, se nao estiver ele libera o link para anterior
if ( @$_GET['pg'] > 0) {
echo "<a href="/.$_SERVER['PHP_SELF']."?pg=".(@$_GET['pg']-1)." class=pg ><b>« Anterior</b></a>";
} else {
echo "<font color=#CCCCCC>« anterior</font>";
}
// Faz aparecer os numeros das página entre o ANTERIOR e PROXIMO
for($i_pg=1; $i_pg<$quant_pg;$i_pg++) {
// Verifica se a página que o navegante esta e retira o link do número para identificar visualmente
if (@$_GET['pg'] == ($i_pg-1)) {
echo " <span class=pgoff>[$i_pg]</span> ";
} else {
$i_pg2 = $i_pg-1;
echo " <a href="/.$_SERVER['PHP_SELF']."?pg=$i_pg2 class=pg><b>$i_pg</b></a> ";
}
}
// Verifica se esta na ultima página, se nao estiver ele libera o link para próxima
if ((@$_GET['pg']+2) < $quant_pg) {
echo "<a href="/.$_SERVER['PHP_SELF']."?pg=".(@$_GET['pg']+1)." class=pg ><b>próximo »</b></a>";
} else {
echo "<font color=#CCCCCC>próximo »</font>";
}
?>
==> Este arquivo necessita claro de adaptação mas ja da uma ideia para desenvolver pode-se tira algumas coisa e colocar outra ai é com você.
<html>
<head>
<TITLE>Gerador de Codigo Geracao tabelas</TITLE>
<script src="/../funcoes/mascaras.js" type="text/javascript"></script>
<link href="/../css/simples.css" rel="stylesheet" type="text/css" media="screen" />
<body bgcolor="#EFEFEF">
<div align="center">
<?php
// Caso voce tenha um menu generico => menu_generico();
// valida_acesso para controla o acesso ( como vai se fazer isso ai e com voce )
if (valida_acesso()==1){
//echo'<meta HTTP-EQUIV = "Refresh" CONTENT = "12; URL =../../login.php">';
//echo'<a href="/../../login.php"> cccccccccccccc </a>';
exit;
}else{
// Faz o Primeiro Select pegando o total de registros
$exp0="SELECT * FROM `cobranca_cad_grupo` ";
$sql0 = mysql_query($exp0);
echo "Quantidade Registros = ";
echo $quantreg = mysql_num_rows($sql0); // Quantidade de registros pra paginação
// Pego o numero da pagina de paginacao da consulta
$pg = @anti_injection($_GET['pg']);
if (empty($pg)) {
$pg = 0;
}
$numreg = 30; // Quantos registros por página vai ser mostrado
$inicial = $pg * $numreg;
// Variavel para filtro => $filtro
//$filtro="where `catalagoint`.`codigoitem`= $codigoitem";
// $filtro="Where ativotipo='Ativo Permanente' ";
$filtro=" ";
// Faz o Select pegando o registro inicial até a quantidade de registros para página
echo $sql = mysql_query("SELECT * FROM `cobranca_cad_grupo` $filtro ORDER BY `cliente` ASC LIMIT $inicial, $numreg");
// Serve para contar quantos registros você tem na seua tabela para fazer a paginação (nao necessita)
// $sql_conta = mysql_query("SELECT * FROM clientes");
//$quantreg = mysql_num_rows($sql); // Quantidade de registros pra paginação
echo "<br>";
include ("paginacao.php"); // Chama o arquivo que monta a paginação. ex: << anterior 1 2 3 4 5 próximo >>
echo "<br>"; // Vai servir só para dar uma linha de espaço entre a paginação e o conteúdo
// Serve para iniciar a tabela e imprimir o titulo da tabela
echo '<table id="customers">
<tr>
<th>Codigo Cliente</th>
<th>Nome Fantasia</th>
<th>Tipo</th>
<th>Ref. Int.</th>
<th>Area</th>
</tr>';
$contaCor=0;
while ($aux = mysql_fetch_array($sql)) {
if($contaCor>1){
$contaCor=0;
}
if($contaCor==0){
//aqui vc vai desenhar linha de uma cor
echo '<tr>';
}
if($contaCor==1){
//aqui vc vai desenhar linha de uma cor
echo '<tr class="alt">';
}
$contaCor++;
echo'
<td><a href="/consulta_cliente_01.php?id_codigo='.$aux['cliente'].'" title="Clique para ver Ficha Completa">'.$aux['cliente'].'</a></td>
<td>'.$aux['n_fantasia'].'</td>
<td>'.$aux['nome'].'</td>
<td>'.$aux['tipo_cliente'].'</td>
<td>'.$aux['ref_int'].'</td>
<td>'.$aux['area'].'</td>
</tr>
';
}
echo '</table>';
}
?>
</div>