Commit 0d4723c2f11e97698bbc9b62f1085d2aad1b4de7
1 parent
f033d387
Exists in
master
and in
1 other branch
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
Showing
3 changed files
with
320 additions
and
19 deletions
Show diff stats
include/library.php
| ... | ... | @@ -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 = ' 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"> </font></td>'; | |
| 254 | + <tr bgcolor="#E1E1E1" > | |
| 255 | + <td nowrap align="left"><font size="1" face="Verdana, Arial"> </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> </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> </td>"; | |
| 284 | + for ($i=3; $i < $fields; $i++) | |
| 260 | 285 | { |
| 261 | - echo '<td nowrap align="left"><font size="1" face="Verdana, Arial">' . $row[$i] .' </td>'; | |
| 286 | + $strNomeCampo = mysql_field_name($resultado, $i); | |
| 287 | + echo '<td nowrap align="left"><font size="1" face="Verdana, Arial">' . $linha->$strNomeCampo .' </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] . " "; | |
| 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] . " "; | |
| 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 | ... | ... |