##############################################################################
#Bruno Gross [mail@brunogross.com]
#Favor manter os créditos
##############################################################################
?>
/*
___paginaLinkPrimeiro___ // Define o link que leva a primeira pagina da paginacao
___paginaLinkUltimo___ // Define o link que leva a ultima pagina da paginacao
___paginaAtual___ // Define a pagina atual em que a paginacao esta
___paginaLinkAnterior___ // Define o local onde devera aparecer o link anterior
___paginaLinkProxima___ // Define o local onde devera aparecer o link proximo
___paginaAnterior___ // Define o numero da pagina anterior em relacao a atual
___paginaProxima___ // Define o numero da proxima pagina em relacao a atual
___tempoExecucao___ // Define o tempo gasto na consulta sql
___paginaTotal___ // Define o total de paginas obtidas na paginacao
___resultadoTotal___ // Define o total de resultados encontrados na consulta sql
___resultadoInicial___ // Define o primeiro resultado mostrado na pagina
___resultadoFinal___ // Define o ultimo resultado mostrado na pagina
___paginacao___ // Define o local onde devera aparecer as paginas da paginacao
___paginaNum___ // Define o numero da pagina
___paginaLink___ // Define o link para as paginas
temaComLinkPrimeiro() // Função que recebe o formato do link Primeiro quando este não for o primeiro
temaSemLinkPrimeiro() // Função que recebe o formato do link Primeiro quando este for o primeiro
temaComLinkUltimo() // Função que recebe o formato do link Ultimo quando este não for o ultimo
temaSemLinkUltimo() // Função que recebe o formato do link Ultimo quando este for o ultimo
conexao() // Função que recebe os dados para conexão no bando de dados
temaMostraAcima() // Função que mostra a paginacao acima dos resultados
temaMostraAbaixo() // Função que mostra a paginacao abaixo dos resultados
resultNenhum() // Função que recebe a mensagem caso não seja encontrado nenhum resultado
temaNumPaginas() // Função que recebe o numero de paginas mostradas por vez na paginacao
temaNumResult() // Função que recebe o numero de resultados mostrado por pagina
sqlTable() // Função que recebe a tabela da consulta sql
sqlWhere() // Função que recebe a condicao da consulta sql
sqlComplemento() // Função que recebe os argumentos de complemento da consulta sql
sqlCampo() // Função que recebe o campo da consulta sql
temaComLinkAnterior() // Função que recebe o formato do link Anterior quando houver uma pagina anterior
temaSemLinkAnterior() // Função que recebe o formato do link Anterior quando não houver uma pagina anterior
temaComLinkProximo() // Função que recebe o formato do link Proximo quando houver uma proxima pagina
temaSemLinkProximo() // Função que recebe o formato do link Proximo quando nao houver uma proxima pagina
temaComLink() // Função que recebe o formato do link da pagina quando esta não for a atual
temaSemLink() // Função que recebe o formato do link da pagina quando esta for a atual
template() // Função que recebe a variavel contento o template
paginaURL() // Função que recebe o complemento da url caso exista algum
temaSeparacao() // Função que recebe a string de separacao entre as paginas
monta() // Função que imprime na tela a paginacao
*/
class paginacao {
// Variaveis que armazenam informacoes sobre a pagina que serao usadas na montagem da paginacao
var $varPagina; // Armazena a pagina atual
var $varPaginaTimeExec; // Armazena o tempo gasto na consulta ao banco de dados
var $varPaginaURL; // Armazena valores que serao concatenadas na URL
var $varPaginaTotal; // Armazena o total de paginas optidas
// Variaveis que armazenam informacoes sobre o resultado que serao usadas na montagem da paginacao
var $varStatusResultTotal; // Armazena o total de resultados optidos
var $varStatusResultIni; // Armazena o primeiro resultado que sera mostrado na pagina
var $varStatusResultFim; // Armazena o ultimo resultado que sera mostrado na pagina
// Variaveis que armazenam dados para montar a paginacao
var $varMontaTemaPaginacao; // Armazena o HTML montado da paginacao
var $varMontaTemplate; // Armazena quais valores serao montados na paginacao
// Variaveis que armazenam informacoes para consulta SQL
var $varSqlCampo; // Armazena os nomes dos campos da consulta SQL
var $varSqlComplemento; // Armazena os comandos que complementam a consulta SQL
var $varSqlDbase; // Armazena o nome do banco de dados
var $varSqlHost; // Armazena o host onde está o mysql
var $varSqlPass; // Armazena a senha do banco de dados
var $varSqlTable; // Armazena a tabela do banco de dados
var $varSqlUser; // Armazena o usuario do banco de dados
var $varSqlWhere; // Armazena a condição WHERE da consulta SQL
// Variaveis que armazenam informacoes sobre a consulta
var $varResult; // Armazena o resultado da consulta SQL
var $varResultNenhum; // Armazena o texto caso não seja encontrado nenhum resultado
var $varResultTotal; // Armazena o numero de resultados obtidos
var $varResultTotalPag; // Armazena o numero de resultados obtidos na pagina
// Variaveis que podem ser passadas
var $varTemaComLink; // Armazena o texto que será mostrado quando não for a pagina atual
var $varTemaSemLink; // Armazena o texto que será mostrado quando for a pagina atual
var $varTemaNumPaginas; // Armazena o numero de paginas que serao mostradas na tela
var $varTemaNumResult; // Armazena o numero de resultados a ser mostrado na pagina
var $varTemaSeparacao; // Armazena o tipo de separacao que será usado na paginacao
var $varTemaComLinkAnterior; // Armazena o texto do link anterior quando este existir
var $varTemaSemLinkAnterior; // Armazena o texto do link anterior quando este não existir
var $varTemaComLinkProximo; // Armazena o texto do link proximo quando este existir
var $varTemaSemLinkProximo; // Armazena o texto do link proximo quando este não existir
var $varTemaComLinkPrimeiro; // Armazena o texto do link primeiro quando este não for o primeiro
var $varTemaSemLinkPrimeiro; // Armazena o texto do link primeiro quando este for o primeiro
var $varTemaComLinkUltimo; // Armazena o texto do link ultimo quando este não for o ultimo
var $varTemaSemLinkUltimo; // Armazena o texto do link ultimo quando este for o ultimo
//=======================================================================================================================
function paginacao() {
$this -> varPagina = isset($_GET["pagina"]) ? $_GET["pagina"] : 1;
$this -> varPaginaTimeExec = 0;
$this -> varPaginaURL = "";
$this -> varPaginaTotal = 0;
$this -> varStatusResultTotal = 0;
$this -> varStatusResultIni = 0;
$this -> varStatusResultFim = 0;
$this -> varMontaTemaPaginacao = "";
$this -> varMontaTemplate["comLinkPrimeiro"] = "no";
$this -> varMontaTemplate["semLinkPrimeiro"] = "no";
$this -> varMontaTemplate["comLinkUltimo"] = "no";
$this -> varMontaTemplate["semLinkUltimo"] = "no";
$this -> varMontaTemplate["mostraAbaixo"] = "no";
$this -> varMontaTemplate["mostraAcima"] = "no";
$this -> varMontaTemplate["comLinkAnterior"] = "no";
$this -> varMontaTemplate["semLinkAnterior"] = "no";
$this -> varMontaTemplate["comLinkProximo"] = "no";
$this -> varMontaTemplate["semLinkProximo"] = "no";
$this -> varMontaTemplate["comLink"] = "no";
$this -> varMontaTemplate["semLink"] = "no";
$this -> varSqlCampo = "";
$this -> varSqlComplemento = "";
$this -> varSqlDbase = "";
$this -> varSqlHost = "";
$this -> varSqlPass = "";
$this -> varSqlTable = "";
$this -> varSqlUser = "";
$this -> varSqlWhere = "";
$this -> varResult = "";
$this -> varResultNenhum = "
Nenhum resultado foi encontrado.
";
$this -> varResultTotal = 0;
$this -> varResultTotalPag = 0;
$this -> varTemaComLink = "";
$this -> varTemaSemLink = "";
$this -> varTemaNumPaginas = 0;
$this -> varTemaNumResult = 10;
$this -> varTemaSeparacao = "";
$this -> varTemaLinkAnterior = "";
$this -> varTemaLinkProximo = "";
$this -> varTemaComLinkPrimeiro= "";
$this -> varTemaSemLinkPrimeiro= "";
$this -> varTemaComLinkUltimo = "";
$this -> varTemaSemLinkUltimo = "";
}
//=======================================================================================================================
function conecta($sql) {
$conn = @pg_connect("host=".$this -> varSqlHost." user=".$this -> varSqlUser." port=5432 dbname=".$this -> varSqlDbase." password=".$this -> varSqlPass."") or die (pg_last_error($conn) );
echo $sql;
$result = @pg_query($conn, $sql) or die (pg_last_error($conn));
pg_close($conn);
return $result;
unset($conn,$sql);
}
//=======================================================================================================================
function conexao($varSqlHost,$varSqlUser,$varSqlPass,$varSqlDbase) {
$this -> varSqlHost = $varSqlHost;
$this -> varSqlUser = $varSqlUser;
$this -> varSqlPass = $varSqlPass;
$this -> varSqlDbase = $varSqlDbase;
}
//=======================================================================================================================
function erroPag($mensagem) {
echo "erro: " . $mensagem;
exit;
}
//=======================================================================================================================
function getMicroTime(){
list($usec, $sec) = explode(" ",microtime());
return ((float)$usec + (float)$sec);
}
//=======================================================================================================================
function temaMostraAcima() {
$this -> varMontaTemplate["mostraAcima"] = "yes";
}
//=======================================================================================================================
function temaMostraAbaixo() {
$this -> varMontaTemplate["mostraAbaixo"] = "yes";
}
//=======================================================================================================================
function resultNenhum($varResultNenhum) {
$this -> varResultNenhum = $varResultNenhum;
}
//=======================================================================================================================
function temaNumPaginas($varTemaNumPaginas) {
$this -> varTemaNumPaginas = (int)$varTemaNumPaginas;
}
//=======================================================================================================================
function temaNumResult($varTemaNumResult) {
$this -> varTemaNumResult = (int)$varTemaNumResult;
}
//=======================================================================================================================
function sqlTable($varSqlTable) {
$this -> varSqlTable = $varSqlTable;
}
//=======================================================================================================================
function sqlWhere($varSqlWhere) {
$this -> varSqlWhere = $varSqlWhere;
}
//=======================================================================================================================
function sqlComplemento($varSqlComplemento) {
$this -> varSqlComplemento = $varSqlComplemento;
}
//=======================================================================================================================
function sqlCampo($varSqlCampo) {
$this -> varSqlCampo = $varSqlCampo;
}
//=======================================================================================================================
function temaComLinkAnterior($varTemaComLinkAnterior) {
$this -> varMontaTemplate["comLinkAnterior"] = "yes";
$this -> varTemaComLinkAnterior = $varTemaComLinkAnterior;
}
//=======================================================================================================================
function temaSemLinkAnterior($varTemaSemLinkAnterior) {
$this -> varMontaTemplate["semLinkAnterior"] = "yes";
$this -> varTemaSemLinkAnterior = $varTemaSemLinkAnterior;
}
//=======================================================================================================================
function temaComLinkProximo($varTemaComLinkProximo) {
$this -> varMontaTemplate["comLinkProximo"] = "yes";
$this -> varTemaComLinkProximo = $varTemaComLinkProximo;
}
//=======================================================================================================================
function temaSemLinkProximo($varTemaSemLinkProximo) {
$this -> varMontaTemplate["semLinkProximo"] = "yes";
$this -> varTemaSemLinkProximo = $varTemaSemLinkProximo;
}
//=======================================================================================================================
function temaComLinkPrimeiro($varTemaComLinkPrimeiro) {
$this -> varMontaTemplate["comLinkPrimeiro"] = "yes";
$this -> varTemaComLinkPrimeiro = $varTemaComLinkPrimeiro;
}
//=======================================================================================================================
function temaSemLinkPrimeiro($varTemaSemLinkPrimeiro) {
$this -> varMontaTemplate["semLinkPrimeiro"] = "yes";
$this -> varTemaSemLinkPrimeiro = $varTemaSemLinkPrimeiro;
}
//=======================================================================================================================
function temaComLinkUltimo($varTemaComLinkUltimo) {
$this -> varMontaTemplate["comLinkUltimo"] = "yes";
$this -> varTemaComLinkUltimo = $varTemaComLinkUltimo;
}
//=======================================================================================================================
function temaSemLinkUltimo($varTemaSemLinkUltimo) {
$this -> varMontaTemplate["semLinkUltimo"] = "yes";
$this -> varTemaSemLinkUltimo = $varTemaSemLinkUltimo;
}
//=======================================================================================================================
function temaComLink($varTemaComLink) {
$this -> varMontaTemplate["comLink"] = "yes";
$this -> varTemaComLink = $varTemaComLink;
}
//=======================================================================================================================
function temaSemLink($varTemaSemLink) {
$this -> varMontaTemplate["semLink"] = "yes";
$this -> varTemaSemLink = $varTemaSemLink;
}
//=======================================================================================================================
function template($varMontaTemaPaginacao) {
$this -> varMontaTemaPaginacao = $varMontaTemaPaginacao;
}
//=======================================================================================================================
function paginaURL($varPaginaURL) {
$this -> varPaginaURL = $varPaginaURL;
}
//=======================================================================================================================
function temaSeparacao($varTemaSeparacao) {
$varTemaSeparacao = str_replace(" "," ",$varTemaSeparacao);
$this -> varTemaSeparacao = $varTemaSeparacao;
}
//=======================================================================================================================
function executaSQL() {
// Captura o tempo antes da execução do SQL.
$micro_time_start = $this -> getMicroTime();
// SELECT que retornará o total de resultados da paginacao.
$sql = "SELECT count(*) FROM " . $this -> varSqlTable;
// Completa a clausula SQL com o WHERE caso seja passado.
if (!empty($this -> varSqlWhere)) {
$sql.= " WHERE " . $this -> varSqlWhere;
}
// Complemento da clausula SQL caso este seja passado.
if (!empty($this -> varSqlComplemento)) {
$sql.= " " . $this -> varSqlComplemento;
}
// Executa a clausula SQL na função conecta().
$result = $this -> conecta($sql);
$totalArray = pg_fetch_row($result);
pg_free_result($result);
$total = $totalArray[0];
// Armazena o total de resultados optidos na consulta.
$this -> varResultTotal = $total;
$ini = $this -> varTemaNumResult * ($this -> varPagina - 1);
// SELECT que retornará os resultados que serao mostrados na pagina.
$sql = "SELECT " . $this -> varSqlCampo . " FROM " . $this -> varSqlTable;
// Completa a clausula SQL com o WHERE caso seja passado.
if (!empty($this -> varSqlWhere)) {
$sql.= " WHERE " . $this -> varSqlWhere;
}
// Complemento da clausula SQL caso este seja passado.
if (!empty($this -> varSqlComplemento)) {
$sql.= " " . $this -> varSqlComplemento;
}
// LIMIT da clausula SQL que define quais valores serao recuperados.
$sql.= " LIMIT " . $this -> varTemaNumResult. " OFFSET " .$ini ;
// Executa a clausula SQL na função conecta().
$result = $this -> conecta($sql);
// Armazena o total de resultados que foram obtidos e que serao mostrados na pagina atual.
// Para informar de qual a qual resultado esta sendo mostrado.
$this -> varResultTotalPag = pg_num_rows($result);
// Armazena o resultado obtido na consulta SQL.
$this -> varResult = $result;
// Armazena o total de paginas obtidas com a paginacao.
$this -> varPaginaTotal = ceil($this -> varResultTotal / $this -> varTemaNumResult);
// Captura o tempo após a execução do SQL.
$micro_time_end = $this -> getMicroTime();
// Armazena o tempo gasto na consulta SQL.
$this -> varPaginaTimeExec = round($micro_time_end - $micro_time_start,2);
unset($micro_time_start,$sql,$result,$totalArray,$total,$ini,$micro_time_end);
}
//=======================================================================================================================
function monta() {
// Executa a clausula SQL.
$this -> executaSQL();
// Funcao que executa o template pegando os valores e montando o HTML.
$this -> montaTemplateValores();
// Se for para mostrar Paginacao no Topo, a imprime
if ($this -> varMontaTemplate["mostraAcima"] == "yes") {
echo $this -> varMontaTemaPaginacao;
}
// Imprime os resultados na tela. Chama uma função criada fora da classe
if (pg_num_rows($this -> varResult) <= 0) {
// Se não encontrar nenhum resultado imprime uma mensagem.
echo $this -> varResultNenhum;
} else {
if (function_exists("tema")){
tema($this -> varResult);
}
}
// Se for para mostrar Paginacao abaixo, a imprime
if ($this -> varMontaTemplate["mostraAbaixo"] == "yes") {
echo $this -> varMontaTemaPaginacao;
}
}
//=======================================================================================================================
function montaTemplateValores() {
$inicio = $this -> varTemaNumResult * ($this -> varPagina - 1);
$final = $inicio + $this -> varResultTotalPag;
// Mostra o total de resultados encontrados.
$this -> varStatusResultTotal = number_format($this -> varResultTotal,0,'.','.');
// Mostra qual o primeiro resultado mostrado na pagina.
$this -> varStatusResultIni = $inicio + 1;
// Mostra qual o ultimo resultado mostrado na pagina.
$this -> varStatusResultFim = $final;
// Se não for informado o numero de paginas a ser mostrado, mostra todas
if (empty($this -> varTemaNumPaginas)) {
$this -> varTemaNumPaginas = $this -> varPaginaTotal;
}
// Calcula qual a primeira pagina e ultima que serao mostradas na tela
$metade = ceil($this -> varTemaNumPaginas / 2);
if ($this -> varTemaNumPaginas % 2 == 0) {
$ant = $metade;
$pos = $metade - 1;
} else {
$ant = $pos = ($metade - 1);
}
if ($this -> varPagina <= $ant) {
$de = 1;
} else {
$de = $this -> varPagina - $ant;
}
// Armazena o valor da ultima pagina antes de ser verificada
$ateTmp = $de + ($this -> varTemaNumPaginas - 1);
// Verifica se o valor da ultima pagina esta certo. Se tiver ok, se não pega a diferença entre a que deu e a ultima pagina
// correta e diminui esse valor do inicio.
if ($ateTmp <= $this -> varPaginaTotal) {
$ate = $ateTmp;
} else {
$tmp = $ateTmp - $this -> varPaginaTotal;
$ate = $this -> varPaginaTotal;
$de = $de - $tmp;
if ($de < 1) {
$de = 1;
}
}
// Chama a funcao que monta o template
$this -> montaTemplate($de,$ate);
unset($inicio,$final,$metade,$ant,$de,$ateTmp,$ate);
}
//=======================================================================================================================
function montaTemplate($de,$ate) {
// Pagina Anterior
$paginaAnterior = $this -> varPagina - 1;
$paginaLink = $_SERVER['PHP_SELF'] . "?pagina=" . $paginaAnterior . $this -> varPaginaURL;
if ($paginaAnterior > 0) {
if ($this -> varMontaTemplate["comLinkAnterior"] == "yes") {
$paginaLinkAnterior = $this -> varTemaComLinkAnterior;
} else {
$paginaLinkAnterior = "" . $this -> varTemaComLinkAnterior . "";
}
} else {
if ($this -> varMontaTemplate["semLinkAnterior"] == "yes") {
$paginaLinkAnterior = $this -> varTemaSemLinkAnterior;
} else {
$paginaLinkAnterior = $this -> varTemaSemLinkAnterior;
}
}
$paginaLinkAnterior = str_replace("___paginaLink___", $paginaLink, $paginaLinkAnterior);
// Proxima Pagina
$paginaProxima = $this -> varPagina + 1;
$paginaLink = $_SERVER['PHP_SELF'] . "?pagina=" . ($this -> varPagina + 1) . $this -> varPaginaURL;
if ($paginaProxima <= $this -> varPaginaTotal) {
if ($this -> varMontaTemplate["comLinkProximo"] == "yes") {
$paginaLinkProxima = $this -> varTemaComLinkProximo;
} else {
$paginaLinkProxima = "" . $this -> varTemaComLinkProximo . "";
}
} else {
if ($this -> varMontaTemplate["semLinkProximo"] == "yes") {
$paginaLinkProxima = $this -> varTemaSemLinkProximo;
} else {
$paginaLinkProxima = $this -> varTemaSemLinkProximo;
}
}
$paginaLinkProxima = str_replace("___paginaLink___", $paginaLink, $paginaLinkProxima);
$paginacao = $this -> varTemaSeparacao;
for ($i = $de; $i <= $ate; $i++) {
$paginaLink = $_SERVER['PHP_SELF'] . "?pagina=$i" . $this -> varPaginaURL;
if ($i == $this -> varPagina) {
if ($this -> varMontaTemplate["semLink"] == "yes") {
$paginacao .= $this -> varTemaSemLink;
} else {
$paginacao .= "$i";
}
} else {
if ($this -> varMontaTemplate["comLink"] == "yes") {
$paginacao .= $this -> varTemaComLink;
} else {
$paginacao .= "$i";
}
}
$paginacao = str_replace("___paginaLink___", $paginaLink, $paginacao);
$paginacao = str_replace("___paginaNum___", $i, $paginacao);
$paginacao .= $this -> varTemaSeparacao;
}
if ($this -> varPagina == 1) {
$paginaLinkPrimeiro = $this -> varTemaSemLinkPrimeiro;
} else {
$paginaLinkPrimeiro = " varPaginaURL . "'>" . $this -> varTemaComLinkPrimeiro . "";
}
if ($this -> varPagina == $this -> varPaginaTotal) {
$paginaLinkUltimo = $this -> varTemaSemLinkUltimo;
} else {
$paginaLinkUltimo = " varPaginaTotal . $this -> varPaginaURL . "'>" . $this -> varTemaComLinkUltimo . "";
}
$tmp = $this -> varMontaTemaPaginacao;
$tmp = str_replace("___paginaAtual___", $this -> varPagina, $tmp);
$tmp = str_replace("___paginaLinkAnterior___", $paginaLinkAnterior, $tmp);
$tmp = str_replace("___paginaLinkProxima___", $paginaLinkProxima, $tmp);
$tmp = str_replace("___paginaAnterior___", $paginaAnterior, $tmp);
$tmp = str_replace("___paginaProxima___", $paginaProxima, $tmp);
$tmp = str_replace("___paginaTotal___", $this -> varPaginaTotal, $tmp);
$tmp = str_replace("___tempoExecucao___", $this -> varPaginaTimeExec, $tmp);
$tmp = str_replace("___resultadoTotal___", $this -> varStatusResultTotal, $tmp);
$tmp = str_replace("___resultadoInicial___", $this -> varStatusResultIni, $tmp);
$tmp = str_replace("___resultadoFinal___", $this -> varStatusResultFim, $tmp);
$tmp = str_replace("___paginacao___", $paginacao, $tmp);
$tmp = str_replace("___paginaLinkPrimeiro___" , $paginaLinkPrimeiro, $tmp);
$tmp = str_replace("___paginaLinkUltimo___" , $paginaLinkUltimo, $tmp);
$this -> varMontaTemaPaginacao = $tmp;
unset($paginaAnterior,$paginaLink,$paginaLinkAnterior,$paginaProxima,$paginaLinkProxima,$paginacao,$i,$de,$ate,$paginaLinkPrimeiro,$paginaLinkUltimo,$tmp);
}
//=======================================================================================================================
// Fim da classe "paginacao"
}
?>