");
# A barra de botões pode ser montada em função do conteúdo da $acao
# Os parâmetros de botoes são ($acao,$limpar,$retornar,$pesquisar,$sair)
#botoes($acao,$limpa,$volta1,$volta2,$sair);
printf("
\n");
printf("
\n");
}
## Fim do Bloco de Funções Locais
###################################################################################################################################################################################
# Referenciando o arquivo catalogo.php
require_once("../catalogo.php");
$acao =( ISSET($_REQUEST['acao']) ) ? $_REQUEST['acao'] : "Navegar";
$bloco=( ISSET($_REQUEST['bloco']) ) ? $_REQUEST['bloco'] : 1;
$salto=( ISSET($_REQUEST['salto']) ) ? $_REQUEST['salto']+1 : 1;
$cor=( $acao=='Listar' AND $bloco==3 ) ? FALSE : TRUE;
iniciapagina($cor,"Médicos","medicos",$acao);
# Note: Existem duas funções no CATALOGO.PHP que 'montam & desmontam' a tabela principal que acomoda o conteúdo de todas as páginas.
# São as funções montatabela() e desmontatabela(). Elas constroem a tabela principal em todas as funcionalidades do sistema EXCETO na listagem de dados (que ocupa a tela toda)
( $acao!='Listar' ) ? montatabela("Médicos - $acao") : "";
#printf("\$acao = $acao | \$bloco = $bloco | \$salto = $salto ");
switch (TRUE)
{
case ( $acao=="Navegar"):
{ # Navegação inicial sobre os dados da tabela medicos
# Executa a montagem do campo para seleção dos registros de médicos que serão exibidos na caixa de seleção
printf(" Este sistema faz o Gerenciamento de dados da Tabela medicos. Esta é a funcionalidade 'Pesquisar'.\n");
printf(" \n");
if ( $bloco==2 )
{ # neste bloco é montado o comando SQL que recupera os campos de 'medicos' e 'especialidadesmedicas' exibidos na caixa de seleção de medicos para manutenção dos dados.
# Note que o comando SQL vai sendo montado com sucessivas operação de concatenação de textos (em PHP esta operação é feita com uso do sinal '.'
$cmdsql="SELECT m.pkmedico, m.txnomemedico, m.nucrm, e.pkespecmedica, e.txnomeespecmedica
FROM medicos AS m left JOIN especialidadesmedicas AS e ON m.fkespecmedica=e.pkespecmedica";
$cmdsql=( ISSET($_REQUEST['txnomemedico']) ) ? $cmdsql." where txnomemedico like '%$_REQUEST[txnomemedico]%'" : $cmdsql;
$cmdsql=$cmdsql." order by m.txnomemedico";
# depois de montado o comando SQL ele deve ser 'enviado' para execução no SGBD e isso é feito pela função '_query'.
# o retorno desta função pode ser entendido como um vetor de três partes: os nomes das tabelas indicadas no comando SQL, os nomes dos campos das tabelas e, finalmente,
# a lista de endereços de registros que foram processados no comando SQL. Outras funções de ambiente da PHP podem usar este 'vetor complexo' no processamento de ações
# tais como, contagem de linha, copia dos conteúdos dos campos lidos para vetores (no escopo do PA).
$execcmd=mysqli_query($nuconexao,$cmdsql);
if ( mysqli_num_rows($execcmd)>0 )
{ # Este bloco será executado para mostrar ao usuário a tela com a caixa de seleção com dados dos medicos para permitr a escolha de ação sobre os registros.
# Note: como em todo form montado, deveremos ter a passsagem em modo oculto das variáveis de controle recursivo.
printf("Na caixa de escolha abaixo, selecione um médico. Na mesma linha escolha o que fazer com os dados do médico selecionado.\n");
printf("");
printf("\n");
}
else
{
printf("Não foram encontrados registros na tabela Médicos com esta parte do nome \n");
printf("Use o botão abaixo ou entre com outra parte de nome no campo de pesquisa \n");
printf("");
}
printf("");
# Note: Na TELA, depois da mensagem: 'Voltar para Pesquisa' é exibida a borda tabela e uma TAG . Esta TAG é emitida pela função terminapagina() e a
# borda da tabela é emitida pela função desmontatabela()
break;
}
break;
} # Fim do 'case Navegar'
case ( $acao=="Incluir"):
{ # Controle da Funcionalidade: INCLUIR (dados da tabela medicos)
switch (TRUE)
{
case ($bloco==1):
{ # montando o form
printf(" \n");
break;
}
case ($bloco==2):
{ # Tratamento da transação.
# lendo os valores digitados nos campos do form
# a transação se inicia com o comando: START TRANSACTION
# a transação deve ser executada 'dentro' de um laço de repetição.
$mostrar=FALSE;
$tenta=TRUE;
while ( $tenta )
{ # laço de controle de exec da trans.
mysqli_query($nuconexao,"START TRANSACTION");
# construção do comando de atualização.
# recuperação do último valor gravado na PK da tabela
$ultimacp=mysqli_fetch_array(mysqli_query($nuconexao,"SELECT MAX(pkmedico) AS CpMAX FROM medicos"));
$CP=$ultimacp['CpMAX']+1;
# Construção do comando de atualização.
$cmdsql="INSERT INTO medicos (pkmedico,txnomemedico,nucrm,fkespecmedica,fkinstiensino,
fklogradouromoradia,txcomplementomoradia,nucepmoradia,nutelemoradia,
fklogradouroclinica,txcomplementoclinica,nucepclinica,nuteleclinica,aosituacao,dtcadmedico)
VALUES ('$CP',
'$_REQUEST[txnomemedico]',
'$_REQUEST[nucrm]',
'$_REQUEST[fkespecmedica]',
'$_REQUEST[fkinstiensino]',
'$_REQUEST[fklogradouromoradia]',
'$_REQUEST[txcomplementomoradia]',
'$_REQUEST[nucepmoradia]','$_REQUEST[nutelemoradia]',
'$_REQUEST[fklogradouroclinica]',
'$_REQUEST[txcomplementoclinica]',
'$_REQUEST[nucepclinica]','$_REQUEST[nuteleclinica]',
'$_REQUEST[aosituacao]',
'$_REQUEST[dtcadmedico]')";
# printf("$cmdsql \n");
# execução do cmd.
mysqli_query($nuconexao,$cmdsql);
# tratamento dos erros de exec do cmd.
if ( mysqli_errno($nuconexao)==0 )
{ # trans pode ser concluída e não reiniciar
mysqli_query($nuconexao,"COMMIT");
$tenta=FALSE;
$mostrar=TRUE;
$mens="Registro incluído! Valor do Código: $CP";
}
else
{
if ( mysqli_errno($nuconexao)==1213 )
{ # abortar a trans e reiniciar
$tenta=TRUE;
}
else
{ # abortar a trans e NÃO reiniciar
$tenta=FALSE;
$mens=mysqli_errno($nuconexaomy)."-".mysqli_error($nuconexaomy);
}
mysqli_query($nuconexao,"ROLLBACK");
$mostrar=FALSE;
}
}
printf("$mens \n");
if ( $mostrar )
{ # mostraregistro incova botoes que recebe os parâmetros ($acao,$limpar,$retornar,$pesquisar,$sair)
$retornar=$salto-2;
$pesquisar=$salto-1;
mostraregistro("$CP");
# montando a Barra de botões
botoes('',FALSE,$retornar,$pesquisar,$salto);
}
break;
}
}
break;
} # Fim do 'case Incluir'
case ( $acao=="Consultar"):
{ # Controle da Funcionalidade: CONSULTAR (dados da tabela medicos)
$retornar=$_REQUEST['salto'];
$pesquisar=$_REQUEST['salto'];
# mostraregistro("$_REQUEST[pkmedico]",$acao,FALSE,$retornar,$pesquisar,"$_REQUEST[salto]");
mostraregistro("$_REQUEST[pkmedico]");
# Montando a Barra de Botões
botoes("",FALSE,$retornar,$pesquisar,$salto);
break;
} # Fim do 'case Consultar'
case ( $acao=="Alterar"):
{ # Controle da Funcionalidade: ALTERAR (dados da tabela medicos)
switch (TRUE)
{
case ($bloco==1):
{ # lendo o registro a alterar da tabela medicos
$reglido=mysqli_fetch_array(mysqli_query($nuconexao,"SELECT * FROM medicos WHERE pkmedico='$_REQUEST[pkmedico]'"));
# montando o form
printf("");
break;
}
case ($bloco==2):
{ # tratamento da transação.
# construção do comando de atualização.
$cmdsql="UPDATE medicos
SET txnomemedico = '$_REQUEST[txnomemedico]',
nucrm = '$_REQUEST[nucrm]',
fkespecmedica = '$_REQUEST[fkespecmedica]',
fkinstiensino = '$_REQUEST[fkinstiensino]',
fklogradouromoradia = '$_REQUEST[fklogradouromoradia]',
txcomplementomoradia = '$_REQUEST[txcomplementomoradia]',
nucepmoradia = '$_REQUEST[nucepmoradia]',
nuteleclinica = '$_REQUEST[nuteleclinica]',
fklogradouroclinica = '$_REQUEST[fklogradouroclinica]',
txcomplementoclinica = '$_REQUEST[txcomplementoclinica]',
nucepclinica = '$_REQUEST[nucepclinica]',
aosituacao = '$_REQUEST[aosituacao]',
nutelemoradia = '$_REQUEST[nutelemoradia]',
dtcadmedico = '$_REQUEST[dtcadmedico]'
WHERE
pkmedico='$_REQUEST[pkmedico]'";
# printf("$cmdsql \n");
$mostrar=FALSE;
$tenta=TRUE;
while ( $tenta )
{ # laço de controle de exec da trans.
mysqli_query($nuconexao,"START TRANSACTION");
# execução do cmd.
mysqli_query($nuconexao,$cmdsql);
# tratamento dos erros de exec do cmd.
if ( mysqli_errno($nuconexao)==0 )
{ # trans pode ser concluída e não reiniciar
mysqli_query($nuconexao,"COMMIT");
$tenta=FALSE;
$mostrar=TRUE;
$mens="Registro com código $_REQUEST[pkmedico] Alterado!";
}
else
{
if ( mysqli_errno($nuconexao)==1213 )
{ # abortar a trans e reiniciar
$tenta=TRUE;
}
else
{ # abortar a trans e NÃO reiniciar
$tenta=FALSE;
$mens=mysqli_errno($nuconexao)."-".mysqli_error($nuconexao);
}
mysqli_query($nuconexao,"ROLLBACK");
$mostrar=FALSE;
}
}
printf("$mens \n");
if ( $mostrar )
{
$retornar=$salto-2;
$pesquisar=$salto-1;
mostraregistro("$_REQUEST[pkmedico]");
botoes('',FALSE,$retornar,$pesquisar,$salto);
}
break;
}
}
break;
} # Fim do 'case Alterar'
case ( $acao=="Excluir"):
{ # Controle da Funcionalidade: EXCLUIR (dados da tabela medicos)
switch (TRUE)
{
case ($bloco==1):
{ # mostra o registro que será excluído e pede confirmação do usuário.
printf(" ");
break;
}
case ($bloco==2):
{ # tratamento da transação.
# construção do comando de atualização.
$cmdsql="DELETE FROM medicos WHERE medicos.pkmedico='$_REQUEST[pkmedico]'";
# printf("$cmdsql \n");
$mostrar=FALSE;
$tenta=TRUE;
while ( $tenta )
{ # laço de controle de exec da trans.
mysqli_query($nuconexao,"START TRANSACTION");
# execução do cmd.
mysqli_query($nuconexao,$cmdsql);
# tratamento dos erros de exec do cmd.
if ( mysqli_errno($nuconexao)==0 )
{ # trans pode ser concluída e não reiniciar
mysqli_query($nuconexao,"COMMIT");
$tenta=FALSE;
$mostrar=TRUE;
$mens="Registro com código $_REQUEST[pkmedico] excluído!";
}
else
{
if ( mysqli_errno($nuconexao)==1213 )
{ # abortar a trans e reiniciar
$tenta=TRUE;
}
else
{ # abortar a trans e NÃO reiniciar
$tenta=FALSE;
$mens=mysqli_errno($nuconexao)."-".mysqli_error($nuconexao);
}
mysqli_query($nuconexao,"ROLLBACK");
$mostrar=FALSE;
}
}
printf("$mens \n");
$retornar=0;
$pesquisar=$salto-1;
botoes('',FALSE,$retornar,$pesquisar,$salto);
break;
}
} break;
} # Fim do 'case Excluir'
case ( $acao=="Listar"):
{ # Controle da Funcionalidade: LISTAR (dados da tabela medicos)
switch (TRUE)
{
case ( $bloco==1 ):
{ # este bloco monta o form e passa o bloco para o valor 2 em modo oculto
# montamenu("Médicos","Listar","$_REQUEST[salto]");
montatabela("Médicos - Listar");
printf(" \n");
# desmontatabela();
break;
}
case ( $bloco==2 || $bloco==3 ):
{ # Este bloco vai processar a junção de medicos com instituicaoensino, logradourocompleto (moradia e clinica) e especiaidadesmedicas.
# Depois monta a tabela com os dados e a seguir um form permitindo que a listagem seja exibida para impressão em uma nova aba.
$selecao=" WHERE (M.dtcadmedico between '$_REQUEST[dtcadini]' and '$_REQUEST[dtcadfim]')";
$selecao=( $_REQUEST['fkespecmedica']!='TODAS' ) ? $selecao." AND M.fkespecmedica='$_REQUEST[fkespecmedica]'" : $selecao ;
$cmdsql="SELECT M.*,
E.txnomeespecmedica,
I.txnomeinstituicao,
L1.txnomelogrcompleto AS txnomelogrmoradia,
L2.txnomelogrcompleto AS txnomelogrclinica
FROM medicos AS M INNER JOIN especialidadesmedicas AS E ON M.fkespecmedica=E.pkespecmedica
LEFT JOIN instituicoesdeensino AS I ON M.fkinstiensino=I.pkinstiensino
INNER JOIN logradourocompleto AS L1 ON M.fklogradouromoradia=L1.pklogradouro
INNER JOIN logradourocompleto AS L2 ON M.fklogradouroclinica=L2.pklogradouro".$selecao." ORDER BY $_REQUEST[ordem]";
# printf("$cmdsql \n");
$execsql=mysqli_query($nuconexao,$cmdsql);
printf("
\n");
# Cores para se alternar nas linhas da listagem
# #00FA9A - MediumSpringGreen
# #90EE90 - LightGreen
# #ADD8E6 - Lightblue
# #F5F5F5 - WhiteSmoke
while ( $le=mysqli_fetch_array($execsql) )
{
$corlinha=($corlinha==" bgcolor='#F5F5F5'") ? " bgcolor='#ADD8E6'" : " bgcolor='#F5F5F5'";
printf("
$le[pkmedico]
\n
$le[txnomemedico]
\n
$le[nucrm]
\n
$le[txnomeespecmedica]-($le[fkespecmedica])
\n
$le[txnomeinstituicao]-($le[fkinstiensino])
\n
$le[txnomelogrmoradia]-($le[fklogradouromoradia])
\n
$le[txcomplementomoradia]
\n
$le[nucepmoradia]
\n
$le[nutelemoradia]
\n
$le[txnomelogrclinica]-($le[fklogradouroclinica])
\n
$le[txcomplementoclinica]
\n
$le[nucepclinica]
\n
$le[nuteleclinica]
\n
$le[aosituacao]
\n
$le[dtcadmedico]
\n");
}
printf("
\n");
if ( $bloco==2 )
{
printf("\n");
}
else
{
printf(" - Corte a folha abaixo da linha no final da página \n\n");
}
break;
}
}
break;
} # Fim do 'case Listar'
}
desmontatabela();
terminapagina("médicos","Médicos","medicos.php");
?>