Guest
Public paste!

Untitled

By: a guest | Feb 9th, 2010 | Syntax: PHP | Size: 6.08 KB | Hits: 22 | Expires: Never
Copy text to clipboard
  1. <?php
  2.  
  3.  
  4.     //|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
  5.     //
  6.     //      CLASSE GENÉRICA DE PAGINAÇÃO USANDO A CLASSE DE MYSQL COMO APOIO
  7.     //      @copyright Copyright (c) 2009, Bruno Luiz
  8.     //
  9.     //|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
  10.  
  11. class paginacao
  12. {
  13.         /* Variaveis */
  14.          public $Mysql;
  15.          public $termo_busca;
  16.          public $chave;
  17.          public $chave_tabela;
  18.          public $resultado_por_pagina;
  19.          public $pagina_atual;
  20.          public $ordenacao;
  21.          public $ResultadoTotal;
  22.          public $modulo;
  23.          public $acao;
  24.          public $inicio_paginacao;
  25.          public $fim_paginacao;
  26.          public $display_status;
  27.          public $condicao_pesquisa;
  28.          public $proxima_pagina;
  29.          public $pagina_anterior;
  30.          public $limite_paginacao;
  31.          public $tabela;
  32.          public $sql_count;
  33.  
  34.         public function __construct()
  35.         {      
  36.                 $this->Mysql = new Mysql();
  37.         }
  38.        
  39.         public function Verificar()
  40.         {      
  41.                 if( empty($this->chave) )
  42.                 {
  43.                         $this->chave = '0';
  44.                 }
  45.                
  46.                 if( empty($this->resultado_por_pagina) )
  47.                 {
  48.                         $this->resultado_por_pagina = '10';
  49.                 }
  50.                
  51.                 if( empty($this->pagina_atual) )
  52.                 {
  53.                         $this->pagina_atual = '1';
  54.                 }
  55.                
  56.                 if( empty($this->ordenacao) )
  57.                 {
  58.                         $this->ordenacao = 'DESC';
  59.                 }
  60.                
  61.         }
  62.          
  63.         public function VerificarData($data)
  64.         {
  65.                 $desmonta = explode("/",$data);
  66.                 $dia =  $desmonta[0];
  67.                 $mes =  $desmonta[1];
  68.                 $ano =  $desmonta[2];
  69.                 return $ano."-".$mes."-".$dia;
  70.         }
  71.         /* Imprime o status da busca quando o formulario foi postado */
  72.         public function Status()
  73.         {
  74.                 $this->inicio_paginacao = ( $this->pagina_atual - 1 ) * $this->resultado_por_pagina + 1 ;
  75.                 $this->fim_paginacao    =       $this->pagina_atual * $this->resultado_por_pagina;      /* final da tabulação */
  76.        
  77.                 if( $this->fim_paginacao  > $this->ResultadoTotal ) $this->fim_paginacao  = $this->ResultadoTotal;
  78.                 if( empty($this->termo_busca) )
  79.                 {      
  80.                         $this->display_status = "Nenhum termo definido, listando todo o conteudo ";
  81.                 }
  82.                 else
  83.                 {
  84.                         $this->display_status = $this->termo_busca;
  85.                 }
  86.         }
  87.        
  88.         public function ResultadoTotal($sql)
  89.         {
  90.                 if( $this->Mysql->select($sql) && $this->Mysql->LinhasSelects() < 1  )
  91.                 {
  92.                         $this->ResultadoTotal = "Erro";
  93.                         return false;
  94.                 }
  95.                 else
  96.                 {
  97.                         $this->ResultadoTotal =  mysql_num_rows( $this->Mysql->ObterQuery() );
  98.                         return true;
  99.                 }              
  100.                
  101.         }
  102.  
  103.         public function MostrarResultado($sql, $tabela)  
  104.         {
  105.                
  106.                 $mostrar = (int)$this->resultado_por_pagina ;
  107.                 $partida = ( $this->pagina_atual - 1 ) * $this->resultado_por_pagina  ;
  108.  
  109.                 $sql_final = " $sql LIMIT $partida , $mostrar ";
  110.                 //echo $sql_final;
  111.                
  112.                 $this->ResultadoTotal($sql);
  113.                
  114.                 if( $this->Mysql->select($sql_final) && $this->Mysql->LinhasSelects() > 0   )
  115.                 {
  116.                         return true;
  117.                 }
  118.                 else
  119.                 {
  120.                         return false;
  121.                 }
  122.         }
  123.  
  124.         /* este filtro defini quantos resultados por pagina irá aparecer */
  125.         public function FiltroResultado()
  126.         {
  127.                 /* controle recebe total de resultados da busca menos a pagina atual */
  128.                 $controle = $this->ResultadoTotal - $this->pagina_atual;
  129.                 /* Verifico se o resto da divisão de controle pela atual é igual a zero */
  130.                 if( $controle % $this->pagina_atual == 0 )
  131.                 {
  132.                         /* divide o valor do controle pela pagina atual e adiciona mais um */
  133.                         $controle = $controle/$this->pagina_atual+1;
  134.                 }
  135.                 else
  136.                 {
  137.                         /* divide o valor do controle pela pagina atual */
  138.                         $controle = ceil( $controle/$this->pagina_atual );
  139.                 }
  140.  
  141.                 echo "<input type=\"submit\" class=\"filtro\" value=\"OK\" />\n\r\t";
  142.                 echo"<select name=\"rpp\" id=\"\" class=\"filtro\" type=\"select-one\">\n\r\t";
  143.                 $count = 1;
  144.                 for( $count; $count <= $controle; $count++ )
  145.                 {
  146.                         echo "<option value=\"$count\">$count</option>\n\r\t";
  147.                 }
  148.                 echo '</select>';
  149.  
  150.         }
  151.        
  152.         public function MostrarPaginacao($link)
  153.         {
  154.        
  155.                 // criando os links de navegação
  156.                         echo "<div id=\"pages\"><ul id=\"paginacao\">";
  157.                        
  158.                 // divide o resultado total pela quantidade de pagina que queremos pegando o maior inteiro
  159.                         $total = ceil($this->ResultadoTotal/$this->resultado_por_pagina );
  160.                                        
  161.                         $this->pagina_anterior  = $this->pagina_atual - 1;
  162.                         $this->proxima_pagina   = $this->pagina_atual + 1;
  163.                                
  164.                         $link_padrao    = $link;
  165.                        
  166.                         if( $this->pagina_atual <= 1 )
  167.                         {
  168.                                 echo "<span class=\"nolink\">&laquo; Voltar</span> ";
  169.                         }
  170.                         else
  171.                         {
  172.                                  // Botao voltar quando pagina atual é maior que um
  173.                                   echo "<span><a href=\"$link_padrao&pg=$this->pagina_anterior#resultado\">&laquo; Voltar</a></span>";
  174.                         }
  175.                        
  176.                         $this->limite_paginacao = 10;
  177.                         $count = 0;
  178.                         $marcador = 1;
  179.                                
  180.                         if( $this->pagina_atual < $this->limite_paginacao  )
  181.                         {
  182.                                 $this->limite_paginacao = $this->pagina_atual-1;
  183.                         }
  184.                         else
  185.                         {
  186.                                 if( $this->limite_paginacao == $this->pagina_atual )
  187.                                 {
  188.                                         $this->limite_paginacao = $this->limite_paginacao - 1;
  189.                                 }
  190.                                 else
  191.                                 {
  192.                                         $marcador =  $this->pagina_atual - $this->limite_paginacao;
  193.                                 }
  194.                         }
  195.                        
  196.                         // imprimindo as paginas anteriores em relação pagina atual
  197.                         for( $count; $count <  $this->limite_paginacao; $count++ )
  198.                         {
  199.                                 echo "<span><a href=\"$link_padrao&pg=$marcador#resultado\">$marcador</a></span>\n\t";
  200.                                 $marcador++;
  201.                         }
  202.                                
  203.                         // imprimindo pagina atual
  204.                         echo "<span class=\"atual\">$this->pagina_atual</a></span>\n\t";
  205.                        
  206.                         // BOTOES DE NAVEGAÇÃO ADIANTE EM RELAÇÃO A PAGINA ATUAL
  207.                         $limite_adiante = 10;  
  208.                         $count = 0;
  209.  
  210.                         if( ($total - $this->pagina_atual) < $limite_adiante )
  211.                         {
  212.                                 $limite_adiante = $total - $this->pagina_atual;
  213.                         }
  214.                                
  215.                         // imprimindo as paginas anteriores a selecao atual
  216.                         for( $count; $count < $limite_adiante ; $count++ )
  217.                         {
  218.                                 $pagina = $this->pagina_atual+$count+1;
  219.                                 echo "<span><a href=\"$link_padrao&pg=$pagina#resultado\">$pagina</a></span>\n\t";
  220.                         }
  221.                        
  222.                         // Verificando e imprimindo o botão de avançar
  223.                         if( $this->pagina_atual == $total )
  224.                         {
  225.                                 echo "<span class=\"nolink\">Avançar &raquo;</span>";
  226.                         }
  227.                         else
  228.                         {
  229.                                 echo "<span><a href=\"$link_padrao&pg=$this->proxima_pagina#resultado\">Next &raquo;</a></span>";
  230.                         }
  231.                        
  232.                          // fim do espaço
  233.                         echo "</ul></div>";
  234.  
  235.         }
  236.  
  237. }
  238. ?>