\n");
# SWITCH CASE com a variável $passo
SWITCH (TRUE)
{ # 1
case ($passo=='1'):
{ # 1.1 - Vamos montar o formulario para entrada de dados da categoria de equipamentos
# o formulario faz uma chamada recursiva do programa categoriinc01.php
# alimenta os valores das variaveis passo=1 e salto=$salto
printf("\n");
# terminar o case com valor do passo = 1
break;
} # 1.1
case ($passo=='2'):
{ # 1.2 Vamos atualizar a categorias com os dados que foram digitados
# Conectando o MySQL
$SERVERNAME='localhost';
$USERNAME='estudante';
$SENHA='e1s2t3u4d5a6n7t8e9';
$BASENAME='minhabase';
$db=mysql_pconnect($SERVERNAME,$USERNAME,$SENHA) or die ("Erro ao conectar ao Banco");
$banco=mysql_select_db($BASENAME,$db) or die ("Problemas ao escolher a base de dados");
# Acertando a tabela de caracteres que sera usada no MySQL
# O MySQL trabalha com vários tipos de caracteres em idiomas diferentes. Os comandos seguintes 'calibram' o MySQL para caracteres do Português-Brasil.
mysql_query("SET NAMES 'utf8'");
mysql_query('SET character_set_connection=utf8');
mysql_query('SET character_set_client=utf8');
mysql_query('SET character_set_results=utf8');
# Vamos iniciar o tratamento de transação
$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=mysql_query("START TRANSACTION");
# 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.
# Vamos Pegar o ultimo valor do codigo de categoria cadastrado e somar uma unidade
# Esta sequencia deve ser realizada DENTRO da Transacao!!
$cmd="SELECT max(cpcategoria) as CodMax FROM categorias";
$ultcod = mysql_query($cmd);
# Em $cpcateg colocamos o maximo valor do campo cpcateg da tabela categorias
$cp = ( mysql_num_rows($ultcod) ==0 ) ? "0" : (mysql_result($ultcod, 0, "CodMax"));
printf("Último Código Gravado: %s \n",$cp);
# soma 1 ao codigo
$PK=$cp + 1;
printf("Agora será gravado o valor $PK para o código
\n");
$dtcadastro=$_POST['dtanocad']."-".$_POST['dtmescad']."-".$_POST['dtdiacad'];
$comando="INSERT INTO categorias VALUES ($PK, '$_POST[txnomecateg]', '$dtcadastro')";
# A variavel $comando tem o comando que deve ser executado no MySQL (e ter seu resultado monitorado na aplicação).
# Executando o comando
$result=mysql_query($comando);
# O Próximo SWITCH trata as situações de erro. A função mysql_errno($db) retorna o número do erro do MySQL.
switch (TRUE)
{ # 1.1.3 - Avaliação da situação de erro (se existir).
case mysql_errno($db) == 1213 :
{ # 1.1.3.1 - Erro de DeadLock - Cancelar e Reiniciar a transacao
$query=mysql_query("ROLLBACK");
$tentativa=1;
break;
} # 1.1.3.1
case mysql_errno($db) > 0 :
{ # 1.1.3.2 - Erro! NÃO por deadlock. AVISAR o usuario. CANCELAR A transacao
printf("Erro na tentativa de $textoope! \n");
$mens=mysql_errno($db)." : ".mysql_error($db);
printf("Mensagem: $mens \n");
$query=mysql_query("ROLLBACK");
$tentativa=0;
break;
} # 1.1.3.2
case mysql_errno($db) == 0 :
{ # 1.1.3.3 - Nao tem erro! Concluir a transacao e Avisar o usuario.
$query=mysql_query("COMMIT");
printf("Registro Atualizado com sucesso! \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
printf("");
break;
} # 1.2
} # 1
printf("\n");
printf("\n