Commit 0d4723c2f11e97698bbc9b62f1085d2aad1b4de7

Authored by anderson.peterle@previdencia.gov.br
1 parent f033d387
Exists in master and in 1 other branch 3.1

Implementada a paginacao de resultados da pagina principal quando do clique nos …

…graficos. Tambem adicionado o retorno do valor DbConnect (integer ConnectionID) pela funcao conecta_bd_cacic().

git-svn-id: http://svn.softwarepublico.gov.br/svn/cacic/cacic/trunk/gerente@535 fecfc0c7-e812-0410-ae72-849f08638ee7
include/library.php
... ... @@ -514,6 +514,7 @@ function conecta_bd_cacic()
514 514 die('<b>Problemas durante a conexão ao BD ou sua sessão expirou!</b>');
515 515  
516 516 }
  517 + return $ident_bd;
517 518 }
518 519  
519 520 // ------------------------------------------------------------------------------
... ...
include/multipagina.class.php 0 → 100755
... ... @@ -0,0 +1,253 @@
  1 +<?php
  2 +/*
  3 + Copyright 2000, 2001, 2002, 2003, 2004, 2005 Dataprev - Empresa de Tecnologia e Informações da Previdência Social, Brasil
  4 +
  5 + Este arquivo é parte do programa CACIC - Configurador Automático e Coletor de Informações Computacionais
  6 +
  7 + O CACIC é um software livre; você pode redistribui-lo e/ou modifica-lo dentro dos termos da Licença Pública Geral GNU como
  8 + publicada pela Fundação do Software Livre (FSF); na versão 2 da Licença, ou (na sua opnião) qualquer versão.
  9 +
  10 + Este programa é distribuido na esperança que possa ser util, mas SEM NENHUMA GARANTIA; sem uma garantia implicita de ADEQUAÇÂO a qualquer
  11 + MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU para maiores detalhes.
  12 +
  13 + Você deve ter recebido uma cópia da Licença Pública Geral GNU, sob o título "LICENCA.txt", junto com este programa, se não, escreva para a Fundação do Software
  14 + Livre(FSF) Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  15 +
  16 +================================================================================================================================
  17 +A classe navbar de Copyright Joao Prado Maia (jpm@phpbrasil.com) e tradução de
  18 +Thomas Gonzalez Miranda (thomasgm@hotmail.com) baixada do site www.phpbrasil.com
  19 +em 06/05/2002 foi modificada para melhor entendimento do seu funcionamento e
  20 +aperfeiçoada deste que apareceram alguns "bugs", sendo transformada como classe
  21 +Mult_Pag (Multiplas paginas).
  22 +As informações acima foram retiradas da versão 1.3 da classe navbar do arquivo
  23 +navbar.zip.
  24 +
  25 +Construi esta pequena classe para navegação dinâmica de links. Observe
  26 +por favor a simplicidade deste código. Este código é livre em
  27 +toda maneira que você puder imaginar. Se você o usar em seu
  28 +próprio script, por favor deixo os créditos como estão. Também,
  29 +envie-me um e-mail se você o fizer, isto me deixa feliz :-)
  30 +
  31 +Adaptações Realizadas / Motivos:
  32 +-------------------------------
  33 +06 a 09/05/2002 : Marco A. D. Freitas (madf@splicenet.com.br)
  34 +26/06/2006 : Paulo Enok Sawazaki (pauloeno@yahoo.com.br)
  35 +24/06/2008 : Anderson Peterle (anderson@peterles.com)
  36 + Motivo: adequação para uso no Sistema CACIC - Configurador Automático e Coletor de Informações Computacionais
  37 + http://www.softwarepublico.gov.br/ver-comunidade?community_id=3585
  38 +================================================================================================================================
  39 +*/
  40 +// classe que multiplica paginas
  41 +class Mult_Pag {
  42 + // Valores padrão para a navegação dos links
  43 + var $num_pesq_pag;
  44 + var $str_anterior = " Anterior ";
  45 + var $str_proxima = " Próxima ";
  46 + var $str_primeira = " Primeira ";
  47 + var $str_ultima = "      Última ";
  48 + // Variáveis usadas internamente
  49 + var $nome_arq;
  50 + var $total_reg;
  51 + var $pagina;
  52 +
  53 + /*
  54 + Metodo construtor. Isto é somente usado para setar
  55 + o número atual de colunas e outros métodos que
  56 + podem ser re-usados mais tarde.
  57 + */
  58 + function Mult_Pag ()
  59 + {
  60 + global $pagina;
  61 + $this->pagina = $pagina ? $pagina : 0;
  62 + }
  63 +
  64 + /*
  65 + O próximo método roda o que é necessário para as queries.
  66 + É preciso rodá-lo para que ele pegue o total
  67 + de colunas retornadas, e em segundo para pegar o total de
  68 + links limitados.
  69 +
  70 + $sql parâmetro:
  71 + . o parâmetro atual da query que será executada
  72 +
  73 + $conexao parâmetro:
  74 + . a ligação da conexão do banco de dados
  75 +
  76 + $tipo parâmetro:
  77 + . "mysql" - usa funções php mysql
  78 + . "pgsql" - usa funções pgsql php
  79 + */
  80 + function Executar($sql, $conexao, $velocidade, $tipo)
  81 + {
  82 + // variavel para o inicio das pesquisas
  83 + $inicio_pesq = $this->pagina * $this->num_pesq_pag;
  84 +
  85 + if ($velocidade == "otimizada") {
  86 + $total_sql = preg_replace("/SELECT (.*?) FROM /sei", "'SELECT COUNT(*) FROM '", $sql);
  87 + } else {
  88 + $total_sql = $sql;
  89 + }
  90 + // tipo da pesquisa
  91 + if ($tipo == "mysql") {
  92 + $resultado = mysql_query($total_sql);
  93 + $this->total_reg = mysql_num_rows($resultado); // total de registros da pesquisa inteira
  94 + $sql .= " LIMIT $inicio_pesq, $this->num_pesq_pag";
  95 + $resultado = mysql_query($sql); // pesquisa com limites por pagina
  96 + }
  97 + else if ($tipo == "pgsql") {
  98 + $resultado = pg_exec($conexao, $total_sql);
  99 + if ( pg_numrows( $resultado ) > 0 ) {
  100 + // total de registros da pesquisa inteira
  101 + $this->total_reg = pg_numrows( $resultado );//pg_Result($resultado, 0, 0);
  102 + }
  103 + $sql .= " LIMIT $this->num_pesq_pag, $inicio_pesq";
  104 + $resultado = pg_Exec($conexao, $sql);// pesquisa com limites por pagina
  105 + }
  106 + return $resultado;
  107 + }
  108 +
  109 + /*
  110 + Este método cria uma string que irá ser adicionada à
  111 + url dos links de navegação. Isto é especialmente importante
  112 + para criar links dinâmicos, então se você quiser adicionar
  113 + opções adicionais à estas queries, a classe de navegação
  114 + irá adicionar automaticamente aos links de navegação
  115 + dinâmicos.
  116 + */
  117 + function Construir_Url()
  118 + {
  119 + global $REQUEST_URI, $REQUEST_METHOD, $HTTP_GET_VARS, $HTTP_POST_VARS;
  120 +
  121 + // separa o link em 2 strings
  122 + @list($this->nome_arq, $voided) = @explode("?", $REQUEST_URI);
  123 +
  124 + if ($REQUEST_METHOD == "GET") $cgi = $HTTP_GET_VARS;
  125 + else $cgi = $HTTP_POST_VARS;
  126 + reset($cgi); // posiciona no inicio do array
  127 +
  128 + // separa a coluna com o seu respectivo valor
  129 + while (list($chave, $valor) = each($cgi))
  130 + if ($chave != "pagina")
  131 + $query_string .= "&" . $chave . "=" . $valor;
  132 +
  133 + return $query_string;
  134 + }
  135 +
  136 + /*
  137 + Este método cria uma ligação de todos os links da barra de
  138 + navegação. Isto é útil, pois é totalmente independete do layout
  139 + ou design da página. Este método retorna a ligação dos links
  140 + chamados no script php, sendo assim, você pode criar links de
  141 + navegação com o conteúdo atual da página.
  142 +
  143 + $opcao parâmetro:
  144 + . "todos" - retorna todos os links de navegação
  145 + . "numeracao" - retorna apenas páginas com links numerados
  146 + . "strings" - retornar somente os links 'Próxima' e/ou 'Anterior'
  147 +
  148 + $mostra_string parâmetro:
  149 + . "nao" - mostra 'Próxima' ou 'Anterior' apenas quando for necessários
  150 + . "sim" - mostra 'Próxima' ou 'Anterior' de qualqur maneira
  151 + */
  152 + function Construir_Links($opcao, $mostra_string)
  153 + {
  154 + $extra_vars = $this->Construir_Url();
  155 + $arquivo = $this->nome_arq;
  156 + $num_mult_pag = ceil($this->total_reg / $this->num_pesq_pag); // numero de multiplas paginas
  157 + $indice = -1; // indice do array final
  158 + $numero_links_proximos=4;
  159 +
  160 + for ($atual = 0; $atual < $num_mult_pag; $atual++) {
  161 +
  162 + // escreve a string esquerda (Pagina Anterior)
  163 + if ((($opcao == "todos") || ($opcao == "strings")) && ($atual == 0)) {
  164 + if ($this->pagina != 0){
  165 + $array[++$indice] = '<a href="' . $arquivo . '?pagina=' . $atual . $extra_vars . '">' . " Primeira" . '</a>      ';
  166 + $array[++$indice] = '<a href="' . $arquivo . '?pagina=' . ($this->pagina - 1) . $extra_vars . '">' . $this->str_anterior . '</a>'; }
  167 + elseif (($this->pagina == 0) && ($mostra_string == "sim")){
  168 + $array[++$indice] = $this->str_primeira;
  169 + $array[++$indice] = $this->str_anterior;
  170 + }
  171 + }
  172 +
  173 + // escreve a numeracao (1 2 3 ...)
  174 +
  175 +
  176 +
  177 +
  178 + if (($opcao == "todos") || ($opcao == "numeracao")) {
  179 + if (($atual > $this->pagina - $numero_links_proximos)&&($atual < $this->pagina + $numero_links_proximos) ){
  180 + if ($this->pagina == $atual){
  181 + $array[++$indice] = "<b>";
  182 + $array[++$indice] = ($atual > 0 ? ($atual + 1) : 1);
  183 + $array[++$indice] = "</b>";
  184 + }else{
  185 + if (($atual == ($this->pagina -($numero_links_proximos-1)))&&($atual != 0)) {
  186 + $array[++$indice] = "<b>...</b>";
  187 + }
  188 + $array[++$indice] = '<a href="' . $arquivo . '?pagina=' . $atual . $extra_vars . '">' . ($atual + 1) . '</a>';
  189 + if (($atual == ($this->pagina +($numero_links_proximos-1)))&&($atual != $num_mult_pag-1)){
  190 + $array[++$indice] = "<b>...</b>";
  191 + }
  192 + }
  193 + }
  194 + }
  195 +
  196 +
  197 + // escreve a string direita (Proxima Pagina)
  198 + if ((($opcao == "todos") || ($opcao == "strings")) && ($atual == ($num_mult_pag - 1))) {
  199 + if ($this->pagina != ($num_mult_pag - 1)){
  200 + $array[++$indice] = '<a href="' . $arquivo . '?pagina=' . ($this->pagina + 1) . $extra_vars . '">' . $this->str_proxima . '</a>';
  201 + $array[++$indice] = '      <a href="' . $arquivo . '?pagina=' . ($num_mult_pag-1) . $extra_vars . '">' . " Última" . '</a>';
  202 + }
  203 + elseif (($this->pagina == ($num_mult_pag - 1)) && ($mostra_string == "sim")){
  204 + $array[++$indice] = $this->str_proxima;
  205 + $array[++$indice] = $this->str_ultima;
  206 + }
  207 + }
  208 + }
  209 + return $array;
  210 + }
  211 +
  212 + /*
  213 + Este método é uma extensão do método Construir_Links() para
  214 + que possa ser ajustado o limite 'n' de número de links na página.
  215 + Isto é muito útil para grandes bancos de dados que desejam não
  216 + ocupar todo o espaço da tela para mostrar toda a lista de links
  217 + paginados.
  218 +
  219 + $array parâmetro:
  220 + . retorna o array de Construir_Links()
  221 +
  222 + $atual parâmetro:
  223 + . a variável da 'pagina' atual das páginas paginadas. ex: pagina=1
  224 +
  225 + $tamanho_desejado parâmetro:
  226 + . o número desejado de links à serem exibidos
  227 + */
  228 + function Mostrar_Parte($array, $atual, $tam_desejado)
  229 + {
  230 +
  231 +
  232 + $size = count($array);
  233 + if (($size <= 2) || ($size < $tam_desejado)) {
  234 + $temp = $array;
  235 + }
  236 + else {
  237 + $temp = array();
  238 + if (($atual + $tamanho_desejado) > $size) {
  239 + $temp = array_slice($array, $size - $tam_desejado);
  240 + } else {
  241 + $temp = array_slice($array, $atual, $tam_desejado);
  242 + if ($size >= $tamanho_desejado) {
  243 + array_push($temp, $array[$size - 1]);
  244 + }
  245 + }
  246 + if ($atual > 0) {
  247 + array_unshift($temp, $array[0]);
  248 + }
  249 + }
  250 + return $temp;
  251 + }
  252 +}
  253 +?>
... ...
relatorios/software/rel_software.php
... ... @@ -14,6 +14,7 @@
14 14 Livre(FSF) Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
15 15 */
16 16 session_start();
  17 +require_once ('../../include/multipagina.class.php');
17 18 /*
18 19 * verifica se houve login e também regras para outras verificações (ex: permissões do usuário)!
19 20 */
... ... @@ -24,7 +25,8 @@ else { // Inserir regras para outras verificações (ex: permissões do usuário)!
24 25  
25 26 require_once('../../include/library.php');
26 27 AntiSpy();
27   -conecta_bd_cacic();
  28 +
  29 +$DbConnect = conecta_bd_cacic();
28 30  
29 31 if ($_GET['principal'])
30 32 {
... ... @@ -231,41 +233,86 @@ $query = &#39; SELECT distinct computadores.te_node_address,
231 233 $query .= ' desc';
232 234 }
233 235  
234   -$result = mysql_query($query) or die('Erro no select ou sua sessão expirou!');
  236 +//$result = mysql_query($query) or die('Erro no select ou sua sessão expirou!');
235 237  
236   -$cor = 0;
237   -$num_registro = 1;
  238 +// *****************************************************
  239 +// Código para Paginação - Anderson Peterle - 24/06/2008
  240 +// *****************************************************
  241 +
  242 +// definicoes de variaveis
  243 +$max_links = 100; // máximo de links à serem exibidos
  244 +$max_res = 100; // máximo de resultados à serem exibidos por tela ou pagina
  245 +$mult_pag = new Mult_Pag(); // cria um novo objeto navbar
  246 +$mult_pag->num_pesq_pag = $max_res; // define o número de pesquisas (detalhada ou não) por página
  247 +
  248 +
  249 +// metodo que realiza a pesquisa
  250 +$resultado = $mult_pag->executar($query, $DbConnect, "", "mysql");
  251 +$reg_pag = mysql_num_rows($resultado); // total de registros por paginas ou telas
238 252  
239   -$fields=mysql_num_fields($result);
240 253 echo '<table cellpadding="2" cellspacing="0" border="1" bordercolor="#999999" bordercolordark="#E1E1E1">
241   - <tr bgcolor="#E1E1E1" >
242   - <td nowrap align="left"><font size="1" face="Verdana, Arial">&nbsp;</font></td>';
  254 + <tr bgcolor="#E1E1E1" >
  255 + <td nowrap align="left"><font size="1" face="Verdana, Arial">&nbsp;</font></td>';
243 256  
244   -for ($i=2; $i < mysql_num_fields($result); $i++)
  257 +for ($i=2; $i < mysql_num_fields($resultado); $i++)
245 258 { //Table Header
246   - print '<td nowrap align="left"><b><font size="1" face="Verdana, Arial"><a href="?orderby=' . ($i + 1) . '&principal='.$_GET['principal'].'">'. mysql_field_name($result, $i) .'</a></font><b></td>';
  259 + print '<td nowrap align="left"><b><font size="1" face="Verdana, Arial"><a href="?orderby=' . ($i + 1) . '&principal='.$_GET['principal'].'">'. mysql_field_name($resultado, $i) .'</a></font><b></td>';
247 260 }
248 261 echo '</tr>';
249 262  
250   -while ($row = mysql_fetch_row($result))
251   - { //Table body
252   - echo '<tr ';
  263 +$cor = 0;
  264 +$num_registro = 1 + ($max_res * $pagina);
  265 +
  266 +// visualizacao do conteudo
  267 +for ($n = 0; $n < $reg_pag; $n++)
  268 + {
  269 + $linha = mysql_fetch_object($resultado); // retorna o resultado da pesquisa linha por linha em um array
  270 + $fields = mysql_num_fields($resultado);
  271 +
  272 + $strFieldTeNodeAddress = mysql_field_name($resultado, 0);
  273 + $strFieldIdSo = mysql_field_name($resultado, 1);
  274 + $strFieldTeNomeComputador = mysql_field_name($resultado, 2);
  275 +
  276 + //Table body
  277 + echo '<tr ';
253 278 if ($cor)
254 279 echo 'bgcolor="#E1E1E1"';
255   -
  280 +
256 281 echo '>';
257   - echo '<td nowrap align="right"><font size="1" face="Verdana, Arial">' . $num_registro . '</font></td>';
258   - echo "<td nowrap align='left'><font size='1' face='Verdana, Arial'><a href='../computador/computador.php?te_node_address=". $row[0] ."&id_so=". $row[1] ."' target='_blank'>" . $row[2] ."</a>&nbsp;</td>";
259   - for ($i=3; $i < $fields; $i++)
  282 + echo '<td nowrap align="right"><font size="1" face="Verdana, Arial">' . $num_registro . '</font></td>';
  283 + echo "<td nowrap align='left'><font size='1' face='Verdana, Arial'><a href='../computador/computador.php?te_node_address=". $linha->$strFieldTeNodeAddress ."&id_so=". $linha->$strFieldIdSo ."' target='_blank'>" . $linha->$strFieldTeNomeComputador ."</a>&nbsp;</td>";
  284 + for ($i=3; $i < $fields; $i++)
260 285 {
261   - echo '<td nowrap align="left"><font size="1" face="Verdana, Arial">' . $row[$i] .'&nbsp;</td>';
  286 + $strNomeCampo = mysql_field_name($resultado, $i);
  287 + echo '<td nowrap align="left"><font size="1" face="Verdana, Arial">' . $linha->$strNomeCampo .'&nbsp;</td>';
262 288 }
263   - $cor=!$cor;
  289 + $cor=!$cor;
264 290 $num_registro++;
265   - echo '</tr>';
  291 + echo '</tr>';
266 292 }
267 293 echo '</table>';
268 294 echo '<br><br>';
  295 +
  296 +// pega todos os links e define que 'Próxima' e 'Anterior' serão exibidos como texto plano
  297 +//$todos_links = $mult_pag->Construir_Links("todos", "sim");
  298 +$todos_links = $mult_pag->Construir_Links("strings", "sim");
  299 +//echo "<P>Esta é a lista de todos os links paginados</P>\n";
  300 +
  301 +//for ($n = 0; $n < count($todos_links); $n++) {
  302 +// echo $todos_links[$n] . "&nbsp;";
  303 +//}
  304 +
  305 +// função que limita a quantidade de links no rodape
  306 +$links_limitados = $mult_pag->Mostrar_Parte($todos_links, $coluna, $max_links);
  307 +
  308 +
  309 +//echo "<P>Esta é a lista dos links limitados</P>\n";
  310 +for ($n = 0; $n < count($links_limitados); $n++) {
  311 + echo $links_limitados[$n] . "&nbsp;";
  312 +}
  313 +
  314 +//
  315 +
269 316 if (count($_SESSION["list8"])>0)
270 317 {
271 318 $v_opcao = 'software'; // Nome do pie que será chamado por tabela_estatisticas
... ...