Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- #######################################################################################################################
- # Programa....: protviasphp03.php
- # Descricao...: Manuten??o Geral dos dados de rotas_viarias
- # Autor.......: Jo?o Maur?cio Hyp?lito
- # Objetivo....: Montar: P?gina de Abertura e as fun??es ICAEL (Inc/Con/Alt/Exc/Listar) dos dados da tabela.
- # As a??es s?o controladas pela var $acao e os trechos recursivos escolhidos na var $passo
- # Cria??o....: 2009-03-27
- # Atualiza??o: Diego Augusto Gonçalves de Paula
- # Atualiza??o: 2013-06-14
- #######################################################################################################################
- # Algoritmo do programa
- # Define a fun??o consulta_rotas_viarias
- # Carrega o toolskit.
- # define valores para as vari?veis $acao, $passo e $salto
- # $acao vai definir as fun??es ICAEL que ser? carregado pelo programa categoriphp02.php
- # $passo define que trecho de cada acao ser? executado
- # $salto define quantos bot?es foram clicados em cada passo de cada fun??o e permite montar os bot?es de volta para a tela de abertura.
- # define valor para $cordefundo (Se $acao==Listagem e $passo==3 assume WHITE sen?o NAVAJOWHITE).
- # Inicia o SWITCH CASE com base no valor de $acao. S?o seis valores (todos :
- # 'Abertura' - atribuido a cada primeira vez que se acessa o programa e
- # 'Incluir' / 'Consultar' / 'Alterar' / 'Excluir' e 'Listagem' (todos atribuido pelo programa de menu (superior) categoriphp02.php)
- # Para $acao='Abertura'
- # Monta uma tela com mensagem de orienta??o ao usu?rio. Cada linha deve ser seguida de uma linha em branco.
- # A mensagem deve ser alinhada um TAB para a direita.
- # Mensagem:
- # Painel de Abertura (em vermelho alinhado a esquerda)
- # Este ? o sistema de manuten??o da tabela departamentos de rotas_viarias para Loca??o
- # Use o menu acima para escolher a a??o que deseja efetuar!
- # Fa?a bom uso dos dados!
- # Depois desta mensagem deve ser emitida a mensagem da fun??o bottomline().
- # Para $acao=='Incluir'
- # Inicia a vari?vel $prg com 'categoriphp03-I' e $texto com 'Incluir' e carrega a fun??o paginainicio($cordefundo,$texto,$prg);
- # Inicia SWITCH com valor da vari?vel $passo.
- # Para $passo=='1'
- # Monta o form para entrada dos valores a incluir
- # $passo='2' hidden
- # Para $passo=='2'
- # monta o comando de INSERT e executa a fun??o que trata a transa??o
- # FIM_DO_CASE_$PASSO
- # Para $acao=='Consultar'
- # Inicia a vari?vel $prg com 'categoriphp03-C' e $texto com 'Consultar' e carrega a fun??o paginainicio($cordefundo,$texto,$prg);
- # Inicia SWITCH com valor da vari?vel $passo.
- # Para $passo=='1'
- # monta a tela de detalhe com os dados do registro que foi procurado
- # FIM_DO_CASE_$PASSO
- # Para $acao=='Alterar'
- # Inicia a vari?vel $prg com 'categoriphp03-A' e $texto com 'Alterar' e carrega a fun??o paginainicio($cordefundo,$texto,$prg);
- # Inicia SWITCH com valor da vari?vel $passo.
- # Para $passo=='1'
- # Monta o form para entrada dos valores a alterar
- # $passo='2' hidden
- # Para $passo=='2'
- # monta o comando de UPDATE e executa a fun??o que trata a transa??o
- # FIM_DO_CASE_$PASSO
- # Para $acao=='Excluir'
- # Inicia a vari?vel $prg com 'categoriphp03-E' e $texto com 'Excluir' e carrega a fun??o paginainicio($cordefundo,$texto,$prg);
- # Inicia SWITCH com valor da vari?vel $passo.
- # Para $passo=='1'
- # monta a tela de detalhe com os dados do registro que foi procurado e um form para confirmar a exclus?o com $passo=2 hidden
- # Para $passo=='2'
- # monta o comando de DELETE e executa a fun??o que trata a transa??o
- # FIM_DO_CASE_$PASSO
- # Para $acao=='Listagem'
- # Inicia a vari?vel $prg com 'categoriphp03-L' e $texto com 'Listagem' e carrega a fun??o paginainicio($cordefundo,$texto,$prg);
- # Inicia SWITCH com valor da vari?vel $passo.
- # Para $passo=='1'
- # monta um form com escolha da ordena??o dos dados
- # $passo='2' hidden
- # Para $passo=='2' ou $passo=='3'
- # monta o relat?rio lendo os dados com a ordena??o escolhida no form anterior
- # Se $passo==2
- # entao
- # monta um form para escolha de vers?o a imprimir abrindo a emissao em uma nova aba do navegador.
- # $passo='3' hidden (escolhendo emitir para impressao a cor de fundo fica WHITE)
- #
- # FIM_DO_CASE_$PASSO
- # FIM_DO_CASE_$ACAO
- #######################################################################################################################
- function consulta_rotas_viarias($PK)
- {
- ##########################################################################################################
- # Executando a conex?o com o Banco de Dados. O Status da Conex?o deve ficar em uma vari?vel que ser? usada
- # na avalia??o do erro do comando. Portanto, criam-se as vari?veis $db e $banco
- # Atribuicao de: - Nome de servidor, Nome do usuario, Senha do usuario e Base de dados
- # Conex?o com o SGBD e determina??o da Base de Dados.
- $SERVERNAME = 'localhost';
- $USERNAME = 'postgres';
- $SENHA = 'postgres';
- $BASENAME = 'adm_exerc_sql';
- $con_string = "host=".$SERVERNAME." port=5432 dbname=".$BASENAME." user=".$USERNAME." password=".$SENHA." connect_timeout=200";
- $db = pg_connect($con_string) or die("Problemas ao escolher a base de dados");
- #pg_query('SET character_set_connection=utf8');
- #pg_query('SET character_set_client=utf8');
- #pg_query('SET character_set_results=utf8');
- # Termina aqui o trecho que estabelece e conex?o com o Banco de Dados.
- # Se trocar o pg pelo PostgreSQL ALTERE ESTE TRECHO DO PROGRAMA
- ##########################################################################################################
- # Executando o comando de leitura do registro com a PK escolhido e a seguir pegando o valor do campo tx_nome.
- $L1 = pg_fetch_array( pg_query( "SELECT * FROM rotas_viarias WHERE rotas_viarias.id_rota='$PK'") );
- $tx_nomeOrigem = pg_result(pg_query("SELECT tx_nome FROM cidades WHERE id_cidade='$L1[id_cidade_origem]'"), 0, 'tx_nome');
- $tx_nomeDestino = pg_result(pg_query("SELECT tx_nome FROM cidades WHERE id_cidade='$L1[id_cidade_destino]'"), 0, 'tx_nome');
- $dtcad=explode("-",$L1['dt_cadastro']);
- # Montando a tabela com os dados da Consulta
- printf("<table border=0>\n");
- printf("<tr><td>Código:</td> <td>$L1[id_rota]</td></tr>\n");
- printf("<tr><td>Nome da Rota:</td> <td>$L1[tx_nome_rota]</td></tr>\n");
- printf("<tr><td>Descriçao do Periodo:</td> <td>$L1[tx_descr_periodo]</td></tr>\n");
- printf("<tr><td>Cidade Origem:</td> <td>$tx_nomeOrigem</td></tr>\n");
- printf("<tr><td>Cidade Destino:</td> <td>$tx_nomeDestino</td></tr>\n");
- printf("<tr><td>Cadastrado em:</td> <td>$dtcad[2]/$dtcad[1]/$dtcad[0]</td></tr>\n");
- printf(" </table> \n");
- }
- # Carregando o kit de ferramentas
- include("../../fncs/toolskit.php");
- $acao=(isset($_POST['acao'])? trim($_POST['acao']):'Abertura'); // $acao recebe $_POST['acao'] (se houver), sen?o 'Abertura'
- $passo=(isset($_POST['passo']) ? $_POST['passo'] : '1'); // $passo recebe $_POST['passo'] (se houver), sen?o 1
- $salto=(isset($_POST['salto'])? $_POST['salto']+1:'1'); // $salto recebe $_POST['salto']+1 (se houver), sen?o 1
- # printf("Acao: $acao<br>Passo: $passo<br>Salto: $salto<br>");
- $SERVERNAME = 'localhost';
- $USERNAME = 'postgres';
- $SENHA = 'postgres';
- $BASENAME = 'adm_exerc_sql';
- $con_string = "host=".$SERVERNAME." port=5432 dbname=".$BASENAME." user=".$USERNAME." password=".$SENHA." connect_timeout=5";
- $cordefundo = ($acao=='Listagem' AND $passo==3) ? "WHITE" : "NAVAJOWHITE" ;
- # SWITCH CASE com a variavel $acao determinando o bloco (AICAEL) que ser? executado
- SWITCH (TRUE)
- { # 1 - Grande Seletor de Blocos de execu??o de comandos
- #####################################################################################################################
- case ($acao=='Abertura'):
- { # 1.1 - Abertura
- $texto="Abertura"; // Este ser? o texto que aparecer? no Topo da p?gina.
- $prg="protviasphp03-Ab";
- # J? est? dispon?vel o montador de p?gina inicial (inicpagina($cordefundo,$texto)) recebendo dois argumentos.
- # Inicio da p?gina
- paginainicio($cordefundo,$texto,$prg);
- printf("Este é o sistema de manutenção da tabela rotas_viarias<br><br>\n");
- printf("Use o menu acima para escolher a ação que deseja efetuar!<br><br>\n");
- printf("Faça bom uso dos dados!<br>\n");
- paginafinal();
- break;
- } # 1.1 - Final Abertura
- #####################################################################################################################
- case ($acao=='Incluir'):
- { # 1.2 - Incluir
- $texto="Incluir"; // Este ser? o texto que aparecer? no Topo da p?gina.
- $prg="protviasphp03-I";
- paginainicio($cordefundo,$texto,$prg);
- ##########################################################################################################
- # Executando a conex?o com o Banco de Dados. O Status da Conex?o deve ficar em uma vari?vel que ser? usada
- # na avalia??o do erro do comando. Portanto, criam-se as vari?veis $db e $banco
- # Atribuicao de: - Nome de servidor, Nome do usuario, Senha do usuario e Base de dados
- # Conex?o com o SGBD e determina??o da Base de Dados.
- $db = pg_connect($con_string) or die("Problemas ao escolher a base de dados");
- #$banco=pg_select_db('projetosql',$db) or die ("Problemas ao escolher a base de dados");
- # Acertando a tabela de caracteres que sera usada no pg (e na base escolhida).
- pg_query( $db,"SET NAMES 'utf8'");
- #pg_query('SET character_set_connection=utf8');
- #pg_query('SET character_set_client=utf8');
- #pg_query('SET character_set_results=utf8');
- # Termina aqui o trecho que estabelece e conex?o com o Banco de Dados.
- # Se trocar o pg pelo PostgreSQL ALTERE ESTE TRECHO DO PROGRAMA
- ##########################################################################################################
- # SWITCH CASE com a vari?vel $passo
- SWITCH (TRUE)
- { # 1.2.1
- case ($passo=='1'):
- { # 1.2.1.1
- # Vamos montar o formulario para entrada de dados da categoria de rotas_viarias
- # o formulario faz uma chamada recursiva do programa protviasphp03.php
- # alimenta os valores das variaveis passo=1 e salto=$salto
- printf("<form action='./protviasphp03.php' method='POST'>\n");
- # Passando em modo escondido a variavel $acao para valor $acao
- printf("<input type='hidden' name='acao' value='$acao'>\n");
- # Passando em modo escondido a variavel $passo para valor 2
- printf("<input type='hidden' name='passo' value='2'>\n");
- # Passando em modo escondido a variavel $salto para valor de $salto
- printf("<input type='hidden' name='salto' value='$salto'>\n");
- # monta uma tabela com duas colunas e na linhas monta o texto e o campo de input para cada campo da tabela
- printf("<table border = 0 >\n");
- # O codigo do rotas_viarias (id_rota) sera gerado pelo programa
- printf("<tr><td>Codigo:</td> <td>Será gerado pelo sistema</td></tr>\n");
- # id_rota ser? escolhido na caixa de sele??o montada a seguir
- # $cmd_sql=pg_query("SELECT * FROM rotas_viarias ORDER BY tx_nome_rota");
- # printf("<tr><td>rotas_viarias</td><td>\n<select name=funcionario>\n");
- # while ( $linha=pg_fetch_array($cmd_sql) )
- # { #
- # printf("<option value='$linha[id_rota]'>$linha[id_rota] - $linha[tx_nome_rota]</option>\n");
- # } #
- # printf("</select>\n</td></tr>\n");
- # id_funcao ser? escolhido na caixa de selecaoo montada a seguir
- #$cmd_sql=pg_query("SELECT id_funcao, tx_nome_funcao FROM funcoes ORDER BY tx_nome_funcao");
- #printf("<tr><td>Funcao do Funcionario</td><td>\n<select name=id_funcao>\n");
- #while ( $linhafunc=pg_fetch_array($cmd_sql) )
- #{ #
- # printf("<option value='$linhafunc[id_funcao]'>$linhafunc[id_funcao] - $linhafunc[tx_nome_funcao]</option>\n");
- #} #
- #printf("</select>\n</td></tr>\n");
- # id_nivel_educacao ser? escolhido na caixa de sele??o montada a seguir
- #$cmd_sql=pg_query("SELECT id_nivel_educacao, tx_nome_comum FROM niveis_de_educacao ORDER BY tx_nome_comum");
- #printf("<tr><td>Nivel Educa??o</td><td>\n<select name=id_nivel_educacao>\n");
- #while ( $linhanivel=pg_fetch_array($cmd_sql) )
- #{ #
- # printf("<option value='$linhanivel[id_nivel_educacao]'>$linhanivel[id_nivel_educacao] - $linhanivel[tx_nome_comum]</option>\n");
- #} #
- #printf("</select>\n</td></tr>\n");
- # campo tx_nome_rota deve ter tamanho de 60 caracteres e comprimento maximo de 250
- printf("<tr><td>Nome da Rota:</td><td><input type='text' name='tx_nomeRota' size=60 maxlength=60></td></tr>\n");
- # campo tx_descr_periodo deve ter tamanho de 250 caracteres e comprimento maximo de 300
- printf("<tr><td>Descricao:</td><td><input type='text' name='tx_descr_periodoVar' size=60 maxlength=250></td></tr>\n");
- # campo tx_nome deve ter tamanho de 250 caracteres e comprimento maximo de 250
- # id_cidade sera escolhido na caixa de selecao montada a seguir
- $cmd_sql=pg_query("SELECT id_cidade, tx_nome FROM cidades ORDER BY tx_nome");
- printf("<tr><td>Cidade Origem</td><td>\n<select name=id_cidadeOrigem>\n");
- while ( $linhacidade=pg_fetch_array($cmd_sql) )
- { #
- printf("<option value='$linhacidade[id_cidade]'>$linhacidade[id_cidade] - $linhacidade[tx_nome]</option>\n");
- } #
- printf("</select>\n</td></tr>\n");
- # id_cidade sera escolhido na caixa de selecao montada a seguir
- $cmd_sql=pg_query("SELECT id_cidade, tx_nome FROM cidades ORDER BY tx_nome");
- printf("<tr><td>Cidade Destino</td><td>\n<select name=id_cidadeDestino>\n");
- while ( $linhacidade=pg_fetch_array($cmd_sql) )
- { #
- printf("<option value='$linhacidade[id_cidade]'>$linhacidade[id_cidade] - $linhacidade[tx_nome]</option>\n");
- } #
- printf("</select>\n</td></tr>\n");
- printf("<tr><td>Data Contratacao:</td><td><input type='text' name='dtdiacont' size=2 maxlength=2>/
- <input type='text' name='dtmescont' size=2 maxlength=2>/
- <input type='text' name='dtanocont' size=4 maxlength=4></td></tr>\n");
- printf("</table>\n");
- # montar o bot?o de conclus?o da INCLUS?O
- printf("<input type='submit' value='Incluir'>");
- # montar o bot?o de voltar UMA p?gina
- printf("<input type='button' value='< Página' onclick='history.go(-1)'>");
- # montar o bot?o de voltar para p?gina de ABERTURA
- printf("<input type='button' value='< Painel de Abertura' onclick='history.go(-$salto)'>");
- # os bot?es de "limpar" (RESET dos campos do form)
- printf("<input type='reset' value='Limpar'>");
- printf("</form>\n");
- # terminar o case com valor do passo = 1
- break;
- } # 1.2.1.1
- case ($passo=='2'):
- { # 1.2.1.2
- # Vamos atualizar a tabela com os dados que foram digitados
- # Vamos chamar a Fun??o de Tratamento de Transa??o com o comando INSERT no quarto parametro da fun??o
- $dt_contratacao=$_POST['dtanocont'].'-'.$_POST['dtmescont'].'-'.$_POST['dtdiacont'];
- $cmd = "INSERT INTO rotas_viarias (
- id_rota,
- tx_nome_rota,
- tx_descr_periodo,
- id_cidade_origem,
- id_cidade_destino,
- dt_cadastro
- ) VALUES ('999999',
- '$_POST[tx_nomeRota]',
- '$_POST[tx_descr_periodoVar]',
- '$_POST[id_cidadeOrigem]',
- '$_POST[id_cidadeDestino]',
- '$dt_contratacao')";
- $textoini = "Incluindo Registro...";
- $textofim = "Incluído";
- $textoope = "Inclusão";
- printf("$textoini<br>\n");
- ###############################################################################################################
- # Colocando o valor 999999 no lugar da PK pode-se, quando se executar a transa??o, controlar o incremento do
- # valor do campo. ? importante que a pesquisa do maior valor aconte?a 'dentro' da transa??o.
- #
- # O comando a seguir era a chamada da Fun??o que trata a transa??o
- ###############################################################################################################
- # Aqui eu vou colocar o trecho de tratamento da Transa??o
- # As pr?ximas vari?veis s?o usadas nos textos de acompanhamento da transa??o.
- $textoini="Incluindo Registro...";
- $textofim="Incluído";
- $textoope="Inclusão";
- # exibindo a vari?vel $texto
- printf("$textoini<br>\n");
- ##########################################################################################################
- # Iniciando o la?o que vai controlar as tentativas de executar a transa??o.
- # Se a Transa??o receber um DEADLOCK ela deve ser executada novamente.
- $tentativa=1;
- while ( $tentativa == 1 )
- { # 1.1 - O la?o se repete enquanto a vari?vel de controle $tentativa valer 1 (TRUE)
- # Iniciando a transa??o.
- $query=pg_query("START TRANSACTION");
- # printf("Comando 249: $cmd<br>\n"); # Mostrando o comando para ver o que est? sendo processado.
- $pos = strpos($cmd,"999999");
- # Se a opera??o for de INCLUS?O , temos que pegar o m?ximo valor da PK e somar 1
- # Este trecho pode ser retirado caso se adote na Base de Dados os campos AUTOINCREMENT para as PK.
- if ( $pos )
- { # 1.1.2 - Desvio para tratamento de inclusao
- # Vamos Pegar o ultimo valor do codigo cadastrado e somar uma unidade
- # Esta sequencia deve ser realizada DENTRO da Transacao!!
- $max="SELECT max(id_rota) as CodMax FROM rotas_viarias";
- # printf("Comando 258: $max<br>\n"); # Mostrando o comando para ver o que est? sendo processado.
- $ultcod = pg_query($max);
- # Em $cp colocamos o maximo valor do campo PK da tabela
- $cp = ( pg_num_rows($ultcod) ==0 ) ? "0" : (pg_result($ultcod, 0, "CodMax"));
- # soma 1 ao codigo
- $PK=$cp + 1;
- } # 1.1.2 - Fim
- # Este pr?ximo comando tem efeito para a opera??o de inclus?o, na escrita do comando o ANALISTA deve colocar a
- # sequencia de 999999 (seis noves) no lugar do valor da PK da tabela. O comando str_replace vai trocar o valor
- # informado em $cmd pelo valor determinado no segmento de c?digo acima (que determinou o pr?ximo valor de PK).
- $cmd=str_replace("999999",$PK,$cmd);
- # A variavel $cmd tem o comando que deve ser executado no pg (e ter seu resultado monitorado na aplica??o).
- # Executando o comando
- # printf("Comando 271: $cmd<br>\n"); # Mostrando o comando para ver o que est? sendo processado.
- $result=pg_query($cmd);
- # Aqui pode-se trocar o comando para pg_query caso seja o SGBD PostgreSQL.
- # O Pr?ximo SWITCH trata as situa??es de erro. A fun??o pg_errno($db) retorna o n?mero do erro do pg.
- switch (TRUE)
- { # 1.1.3 - Avalia??o da situa??o de erro (se existir).
- case pg_errormessage($db) == 1213 :
- { # 1.1.3.1 - Erro de DeadLock - Cancelar e Reiniciar a transacao
- $query=pg_query("ROLLBACK");
- $tentativa=1;
- break;
- } # 1.1.3.1
- case pg_errormessage($db) > 0 :
- { # 1.1.3.2 - Erro! N?O por deadlock. AVISAR o usuario. CANCELAR A transacao
- printf("<b>Erro na tentativa de $textoope!</b><br>\n");
- $mens=pg_errno($db)." : ".pg_error($db);
- printf("Mensagem: $mens<br>\n");
- $query=pg_query("ROLLBACK");
- $tentativa=0;
- break;
- } # 1.1.3.2
- case pg_errormessage($db) == 0 :
- { # 1.1.3.3 - Nao tem erro! Concluir a transacao e Avisar o usuario.
- $query=pg_query("COMMIT");
- printf("Registro <b>$textofim</b> com sucesso!<br>\n");
- $tentativa=0;
- break;
- } # 1.1.3.3
- } # 1.1.3 - Fim do SWITCH tratando os status da transa??o
- } # 1.1 - Fim do la?o de repeti??o
- ###############################################################################################################
- ###############################################################################################################
- if (pg_errormessage($db)==0 )
- { # Podemos mostrar o registro que foi gravado
- consulta_rotas_viarias($PK);
- }
- # montar o bot?o de voltar para p?gina de ABERTURA
- continuar("protvias");
- break;
- } # 1.2.1.2
- } # 1.2.1
- paginafinal();
- break;
- } # 1.2 - Final Incluir
- #####################################################################################################################
- case ($acao=='Consultar'):
- { # 1.3 - Consultar
- $texto="Consultar"; // Este ser? o texto que aparecer? no Topo da p?gina.
- $prg="protviasphp03-C";
- paginainicio($cordefundo,$texto,$prg);
- # Chamando a fun??o que monta a tela de consulta
- $PK=$_POST['id_rota'];
- consulta_rotas_viarias($PK);
- # montar o bot?o de voltar para p?gina de ABERTURA
- printf("<input type='button' value='< Painel de Abertura' onclick='history.go(-$salto)'>");
- paginafinal();
- break;
- } # 1.3 - Final Consultar
- #####################################################################################################################
- case ($acao=='Alterar'):
- { # 1.4 - Alterar
- $texto="Alterar"; // Este ser? o texto que aparecer? no Topo da p?gina.
- $prg="protviasphp03-A";
- paginainicio($cordefundo,$texto,$prg);
- ################################################################################################################
- # O trecho de conex?o ? comum para a parte que vai ler o registro e para a transa??o.
- # Por isso vem ANTES do Switch.
- ###############################
- # Fazendo a conex?o com o banco de dados.
- # Atribuicao de: - Nome de servidor, Nome do usuario, Senha do usuario e Base de dados
- $db = pg_connect($con_string) or die("Problemas ao escolher a base de dados");
- #$banco=pg_select_db('projetosql',$db) or die ("Problemas ao escolher a base de dados");
- # Acertando a tabela de caracteres que sera usada no pg
- pg_query($db,"SET NAMES 'utf8'");
- #pg_query('SET character_set_connection=utf8');
- #pg_query('SET character_set_client=utf8');
- #pg_query('SET character_set_results=utf8');
- # aqui termina o trecho de conex?o com o banco de dados
- ################################################################################################################
- # SWITCH CASE com a vari?vel $passo
- SWITCH (TRUE)
- { # 1.4.1
- case ($passo=='1'):
- { # 1.4.1.1 - Montando a tela com os dados do registro para altera??o
- printf("<form action='./protviasphp03.php' method='POST'>\n");
- printf("<input type='hidden' name='id_rota' value='$_POST[id_rota]'>\n");
- printf("<input type='hidden' name='acao' value='Alterar'>\n");
- printf("<input type='hidden' name='passo' value='2'>\n");
- printf("<input type='hidden' name='salto' value='$salto'>\n");
- $le = pg_fetch_array( pg_query( "SELECT * FROM rotas_viarias WHERE rotas_viarias.id_rota='$_POST[id_rota]'") );
- # Montando a tabela com os dados da Consulta
- $dtcad=explode("-",$le['dt_cadastro']);
- # Montando a tabela com os dados da Consulta
- printf("<table border = 0 >\n");
- # O codigo do rotas_viarias (id_rota) NAO deve ser Alterado
- printf("<tr><td>Código:</td> <td>$le[id_rota] (Não é alterado)</td></tr>\n");
- # id_cidade deve ter tamanho de 3 caracteres e comprimento maximo de 3 caracteres
- $cmd_sql=pg_query("SELECT * FROM cidades ORDER BY tx_nome");
- printf("<tr><td>Cidade Origem</td><td>\n<select name=id_cidadeOrigem>\n");
- while ( $linha=pg_fetch_array($cmd_sql) )
- { #
- $selected=( $linha['id_cidade']==$le['id_cidade'] ) ? "selected" : "";
- printf("<option value='$linha[id_cidade]' $selected>$linha[id_cidade] - $linha[tx_nome]</option>\n");
- } #
- $cmd_sql=pg_query("SELECT * FROM cidades ORDER BY tx_nome");
- printf("<tr><td>Cidade Destino</td><td>\n<select name=id_cidadeDestino>\n");
- while ( $linha=pg_fetch_array($cmd_sql) )
- { #
- $selected=( $linha['id_cidade']==$le['id_cidade'] ) ? "selected" : "";
- printf("<option value='$linha[id_cidade]' $selected>$linha[id_cidade] - $linha[tx_nome]</option>\n");
- } #
- printf("</select>\n</td></tr>\n");
- # campo tx_nome_rota deve ter tamanho de 30 caracteres e comprimento maximo de 30
- printf("<tr><td>Nome Rota:</td><td><input type='text' name='tx_nome_rota' value='$le[tx_nome_rota]' size=30 maxlength=60></td></tr>\n");
- # campo tx_descr_periodo deve ter tamanho de 60 caracteres e comprimento maximo de 250
- printf("<tr><td>Descriçao:</td><td><input type='text' name='tx_descr_periodo' value='$le[tx_descr_periodo]' size=60 maxlength=250></td></tr>\n");
- # id_cidade deve ter tamanho de 3 caracteres e comprimento maximo de 3 caracteres
- # dt_cadastro deve ser apresentado em tr?s campos dtdianasc, dtmesnasc, dtanonasc
- printf("<tr><td>Data de Cadastro:</td><td><input type='text' name='dtdiacad' value='$dtcad[2]' size=2 maxlength=2>/<input type='text' name='dtmescad' value='$dtcad[1]' size=2 maxlength=2>/<input type='text' name='dtanocad' value='$dtcad[0]' size=4 maxlength=4></td></tr>\n");
- printf("</table>\n");
- # os bot?es de conclus?o da ALTERA??O
- printf("<input type='submit' value='Alterar'>");
- # montar o bot?o de voltar UMA p?gina
- printf("<input type='button' value='< Página' onclick='history.go(-1)'>");
- # montar o bot?o de voltar para p?gina de ABERTURA
- printf("<input type='button' value='< Painel de Abertura' onclick='history.go(-$salto)'>");
- # os bot?es de "limpar" (RESET dos campos do form)
- printf("<input type='reset' value='Limpar'>");
- printf("</form>\n");
- break;
- } # 1.4.1.1
- case ($passo=='2'):
- { # 1.4.1.2 - Alterando o registro, executa-se a Fun??o de Tratamento de Transa??o com o comando UPDATE no quarto parametro
- $cmd = "UPDATE rotas_viarias
- SET id_cidade_origem ='$_POST[id_cidadeOrigem]',
- id_cidade_destino ='$_POST[id_cidadeDestino]',
- tx_nome_rota ='$_POST[tx_nome_rota]',
- tx_descr_periodo ='$_POST[tx_descr_periodo]',
- dt_cadastro = '$_POST[dtanocad]-$_POST[dtmescad]-$_POST[dtdiacad]'
- WHERE id_rota='$_POST[id_rota]'";
- ###############################################################################################################
- ###############################################################################################################
- $textoini="Alterando o Registro Escolhido...";
- $textofim="Alterado";
- $textoope="Alteração";
- # exibindo a vari?vel $textoini
- printf("$textoini<br>\n");
- # Iniciando o la?o que vai controlar as tentativas de executar a transa??o.
- # Se a Transa??o receber um DEADLOCK ela deve ser re-tentada.
- $tentativa=1;
- while ( $tentativa == 1 )
- { # 1.1 - O la?o se repete enquanto a vari?vel de controle $tentativa valer 1 (TRUE)
- # Iniciando a transa??o.
- $query = pg_query ($db, "begin");
- //rodar o comando agora
- pg_send_query($db, $cmd);
- $result = pg_get_result($db);
- # O Pr?ximo SWITCH trata as situa??es de erro. A fun??o pg_errno($db) retorna o n?mero do erro do pg.
- switch (TRUE)
- { # 1.1.3 - Avalia??o da situa??o de erro (se existir).
- case pg_errormessage($db) == 1213 :
- { # 1.1.3.1 - Erro de DeadLock - Cancelar e Reiniciar a transacao
- $query = pg_query($db, "rollback");
- $tentativa=1;
- break;
- } # 1.1.3.1
- case pg_errormessage($db) > 0 :
- { # 1.1.3.2 - Erro! N?O por deadlock. AVISAR o usuario. CANCELAR A transacao
- printf("<b>Erro na tentativa de $textoope!</b><br>\n");
- $mens=pg_errno($db)." : ".pg_error($db);
- printf("Mensagem: $mens<br>\n");
- $query = pg_query($db, "rollback");
- $tentativa=0;
- break;
- } # 1.1.3.2
- case pg_errormessage($db) == 0 :
- { # 1.1.3.3 - Nao tem erro! Concluir a transacao e Avisar o usuario.
- $query = pg_query($db, "commit");
- printf("Registro <b>$textofim</b> com sucesso!<br>\n");
- $tentativa=0;
- break;
- } # 1.1.3.3
- } # 1.1.3 - Fim do SWITCH tratando os status da transa??o
- } # 1.1 - Fim do la?o de repeti??o
- ###############################################################################################################
- ###############################################################################################################
- continuar("protvias");
- break;
- } # 1.4.1.2
- } # 1.4.1
- paginafinal();
- break;
- } # 1.4 - Final Alterar
- #####################################################################################################################
- case ($acao=='Excluir'):
- { # 1.5 - Excluir
- $texto="Excluir"; // Este ser? o texto que aparecer? no Topo da p?gina.
- $prg="protviasphp03-A";
- paginainicio($cordefundo,$texto,$prg);
- ################################################################################################################
- # O trecho de conex?o ? comum para a parte que vai ler o registro e para a transa??o.
- # Por isso vem ANTES do Switch.
- ###############################
- # Fazendo a conex?o com o banco de dados.
- # Atribuicao de: - Nome de servidor, Nome do usuario, Senha do usuario e Base de dados
- $db = pg_connect($con_string) or die("Problemas ao escolher a base de dados");
- #$banco=pg_select_db('projetosql',$db) or die ("Problemas ao escolher a base de dados");
- # Acertando a tabela de caracteres que sera usada no pg
- pg_query($db,"SET NAMES 'utf8'");
- #pg_query('SET character_set_connection=utf8');
- #pg_query('SET character_set_client=utf8');
- #pg_query('SET character_set_results=utf8');
- # aqui termina o trecho de conex?o com o banco de dados
- ################################################################################################################
- # SWITCH CASE com a vari?vel $passo
- SWITCH (TRUE)
- { # 1.5.1 - Monta a tela com o registro e o form para confirmar a exclus?o
- case ($passo=='1'):
- { # Chamando a fun??o que monta a tela de consulta
- $PK=$_POST['id_rota'];
- consulta_rotas_viarias($PK);
- # Montagem do formulário com passagem escondida do valor da sigla
- # Para deleção do registro do Banco de Dados
- printf("<form action='./protviasphp03.php' method='post'>\n");
- printf("<input type='hidden' name='id_rota' value='$_POST[id_rota]'>\n");
- printf("<input type='hidden' name='acao' value='$acao'>\n");
- printf("<input type='hidden' name='passo' value='2'>\n");
- printf("<input type='hidden' name='salto' value='$salto'>\n");
- # montar o bot?o de conclus?o da EXCLUS?O
- printf("<input type=submit value='Confirmar a Exclusão'>");
- # montar o bot?o de voltar UMA p?gina
- printf("<input type='button' value='< Página' onclick='history.go(-1)'>");
- # montar o bot?o de voltar para p?gina de ABERTURA
- printf("<input type='button' value='< Painel de Abertura' onclick='history.go(-$salto)'>");
- # os bot?es de "limpar" (RESET dos campos do form)
- printf("<input type='reset' value='Limpar'>");
- printf("</form>");
- break;
- } # 1.5.1
- case ($passo=='2'):
- { # 1.5.2 - Chamando a fun??o que executa a exclus?o
- # Montando o comando que ser? executado na transa??o
- $cmd="DELETE FROM rotas_viarias WHERE id_rota='$_POST[id_rota]'";
- ###############################################################################################################
- ###############################################################################################################
- $textoini="Excluindo o Registro Escolhido...";
- $textofim="Excluído";
- $textoope="Exclusão";
- # exibindo a vari?vel $textoini
- printf("$textoini<br>\n");
- # Iniciando o la?o que vai controlar as tentativas de executar a transa??o.
- # Se a Transa??o receber um DEADLOCK ela deve ser re-tentada.
- $tentativa=1;
- while ( $tentativa == 1 )
- { # 1.1 - O la?o se repete enquanto a vari?vel de controle $tentativa valer 1 (TRUE)
- # Iniciando a transa??o.
- $query = pg_query ($db, "begin");
- pg_send_query($db, $cmd);
- $result = pg_get_result($db);
- # O Pr?ximo SWITCH trata as situa??es de erro. A fun??o pg_errno($db) retorna o n?mero do erro do pg.
- switch (TRUE)
- { # 1.1.3 - Avalia??o da situa??o de erro (se existir).
- case pg_errormessage($db) == 1213 :
- { # 1.1.3.1 - Erro de DeadLock - Cancelar e Reiniciar a transacao
- $query = pg_query($db, "rollback");
- $tentativa=1;
- break;
- } # 1.1.3.1
- case pg_errormessage($db) > 0 :
- { # 1.1.3.2 - Erro! N?O por deadlock. AVISAR o usuario. CANCELAR A transacao
- printf("<b>Erro na tentativa de $textoope!</b><br>\n");
- $mens=pg_errno($db)." : ".pg_error($db);
- printf("Mensagem: $mens<br>\n");
- $query = pg_query($db, "rollback");
- $tentativa=0;
- break;
- } # 1.1.3.2
- case pg_errormessage($db) == 0 :
- { # 1.1.3.3 - Nao tem erro! Concluir a transacao e Avisar o usuario.
- $query = pg_query($db, "commit");
- printf("Registro <b>$textofim</b> com sucesso!<br>\n");
- $tentativa=0;
- break;
- } # 1.1.3.3
- } # 1.1.3 - Fim do SWITCH tratando os status da transa??o
- } # 1.1 - Fim do la?o de repeti??o
- ###############################################################################################################
- ###############################################################################################################
- continuar("protvias");
- break;
- }
- } # 1.5.2
- paginafinal();
- break;
- } # 1.5 - Final Excluir
- #####################################################################################################################
- case ($acao=='Listagem'):
- { # 1.6 - Listagem
- $texto="Listagem: rotas_viarias"; // Este ser? o texto que aparecer? no Topo da p?gina.
- $prg="protviasphp03-L";
- paginainicio($cordefundo,$texto,$prg);
- ################################################################################################################
- # O trecho de conex?o ? comum para a parte que vai ler o registro e para a transa??o.
- # Por isso vem ANTES do Switch.
- ###############################
- # Fazendo a conex?o com o banco de dados.
- # Atribuicao de: - Nome de servidor, Nome do usuario, Senha do usuario e Base de dados
- $db = pg_connect($con_string) or die("Problemas ao escolher a base de dados");
- #$banco=pg_select_db('projetosql',$db) or die ("Problemas ao escolher a base de dados");
- # Acertando a tabela de caracteres que sera usada no pg
- pg_query($db,"SET NAMES 'utf8'");
- #pg_query('SET character_set_connection=utf8');
- #pg_query('SET character_set_client=utf8');
- #pg_query('SET character_set_results=utf8');
- # aqui termina o trecho de conex?o com o banco de dados
- ################################################################################################################
- # SWITCH CASE com a vari?vel $passo
- SWITCH (TRUE)
- { # 1.6.1
- case ($passo==1):
- { # 1.6.1.1 Vamos montar o formulario para escolha da ordena??o dos dados no relat?rio
- printf("<form action='./protviasphp03.php' method='post'>\n");
- printf("<input type='hidden' name='acao' value='$acao'>\n");
- printf("<input type='hidden' name='passo' value='2'>\n");
- printf("<input type='hidden' name='salto' value='$salto'>\n");
- printf("Escolha a ordenação dos dados do relatório marcando um dos campos<br>\n");
- printf("<table>\n");
- printf("<tr><td>Codigo Rota:</td> <td><INPUT TYPE=RADIO NAME='ordem' VALUE='r.id_rota' CHECKED></td></tr>\n");
- printf("<tr><td>Nome da Rota:</td> <td><INPUT TYPE=RADIO NAME='ordem' VALUE='r.tx_nome_rota'></td></tr>\n");
- printf("<tr><td>Descricao:</td> <td><INPUT TYPE=RADIO NAME='ordem' VALUE='r.tx_descr_periodo'></td></tr>\n");
- printf("<tr><td>ID Cidade:</td> <td><INPUT TYPE=RADIO NAME='ordem' VALUE='c.id_cidade'></td></tr>\n");
- printf("<tr><td>Nome da Cidade:</td> <td><INPUT TYPE=RADIO NAME='ordem' VALUE='c.tx_nome'></td></tr>\n");
- printf("<tr><td>Data de Cadastro</td> <td><INPUT TYPE=RADIO NAME='ordem' VALUE='r.dt_cadastro'></td></tr>\n");
- # Montar o bot?o para Gerar a Listagem
- printf("<tr><td colspan=2><input type=submit value='Gerar Listagem'>");
- # montar o bot?o de voltar UMA p?gina
- printf("<input type='button' value='< Página' onclick='history.go(-1)'>");
- # montar o bot?o de voltar para p?gina de ABERTURA
- printf("<input type='button' value='< Painel de Abertura' onclick='history.go(-$salto)'>");
- # os bot?es de "limpar" (RESET dos campos do form)
- printf("<input type='reset' value='Limpar'></td></tr>\n");
- printf("</table>\n");
- printf("</form>\n");
- # Aqui montamos o final de p?gina
- paginafinal();
- break;
- } # 1.6.1.1
- case ($passo==2 or $passo==3):
- { # 1.6.1.2 - pegando o valor da variavel $ordena do formulario anterior
- $ordem=$_POST['ordem'];
- # O proximo comando le a tabela de usuarios ordenando os dados pela escolha indicada na variavel $ordem
- $cmd = "SELECT r.*, c.id_cidade, c.tx_nome
- FROM rotas_viarias r LEFT JOIN cidades c ON r.id_cidade_origem = c.id_cidade
- ORDER BY $ordem";
- # printf("$cmd<br>");
- $sql = pg_query($cmd);
- printf("<table border=1>\n");
- printf("<tr bgcolor='LIGHTGREEN'><td>Id Rota</td>
- <td>Nome da Rota</td>
- <td>Descricao</td>
- <td>ID Cidade Origem</td>
- <td>ID Cidade Destino</td>
- <td>Dt Cadastro</td></tr>\n");
- $cor="WHITE";
- while ($le = pg_fetch_array($sql))
- {
- printf("<tr bgcolor='$cor'><td>$le[id_rota]</td>
- <td> $le[tx_nome_rota]</td>
- <td>$le[tx_descr_periodo]</td>
- <td>$le[id_cidade_origem]
- <td>$le[id_cidade_destino]
- <td>$le[dt_cadastro]</td>
- </tr>\n");
- $cor=( $cor == "WHITE" ) ? "LIGHTGREEN" : "WHITE";
- }
- printf("</table>\n");
- if ( $passo==2 )
- { # 1.2.2 vamos montar o bot?o para impress?o
- printf("<form action='./protviasphp03.php' method='POST' target='_NEW'>\n");
- printf("<input type='hidden' name='acao' value='$acao'>\n");
- printf("<input type='hidden' name='passo' value='3'>\n");
- printf("<input type='hidden' name='ordem' value='$ordem'>\n");
- # Aqui montamos o bot?o de voltar
- printf("<input type='submit' value='Gerar cópia para Impressão'><input type='button' value='< UMA Pág.' onclick='history.go(-1)'><input type='button' value='< Painel de Abertura' onclick='history.go(-$salto)'><br>\n");
- printf("O mesmo relatório será montado em uma janela!<br>Depois você pode escolher a impressão pelo navegador.\n");
- printf("</form>\n");
- continuar("protvias");
- paginafinal();
- } # 1.2.2
- else
- { # 1.2.3
- printf("<hr>\nDepois de Imprimir rasgue na linha acima<br>\n");
- printf("<input type='submit' value='Imprimir' onclick='javascript:window.print();'>");
- } # 1.2.3
- break;
- } # 1.6.1.2
- } # 1.6.1
- break;
- } # 1.6 - Final Listar
- #####################################################################################################################
- } # - Final do Grande Switch Case
- ?>
Add Comment
Please, Sign In to add comment