2
I’m with source where I need now adapt it to use the try, catch, finally and exception and I’m not getting it, this source already has some try´s with catch(PDOException $erro) where I do some validations, because I’m making a return call JSon and returning the status of the operation to the user and I believe that, now, they will be unnecessary.
I tried to isolate the messages to throw them in the exception by eliminating them from the body of the code, but as I said unsuccessfully, I don’t know exactly what has to be done, because I have several interactions between select, delete and insert to only send the commit or rollBack and send a message to the user, finalizing the process.
What I got so far:
The call:
$(document).ready(function(){
$(function () {
// Validation
$("#frmGravaDados").validate({
// Do not change code below
errorPlacement: function (error, element) {
error.insertAfter(element.parent());
},
submitHandler: function (form) {
var data = $(form).serialize();
console.log(data);
$.ajax({
type: 'POST',
url: 'ajax/pInterfaceServico.php',
data: data,
dataType: 'json',
beforeSend: function () {
$("#msgBusca").html('×AVISO! Enviando...');
},
success: function (response) {
if (response.codigo == "1") {
$("#msgBusca").html('×AVISO!' + response.mensagem + '');
} else {
$("#msgBusca").html('×ATENÇÃO! ' + response.mensagem + '');
}
},
error: function (xhr, ajaxOptions, thrownError) {
console.log(xhr, ajaxOptions, thrownError);
$("#msgInsert").html('×ATENÇÃO! Ocorreu um erro no registro de direito. Contate o suporte técnico.');
}
});
return false;
}
});
});
});
The code in the php:
// ATRIBUI UMA CONEXÃO PDO
$conexao = Conexao::getInstance();
$crud = Crud::getInstance($conexao);
// DADOS DO FORMULÁRIO
$IdInterface = (isset($_POST['IdInterface'])) ? $_POST['IdInterface'] : '';
$IdUsuario = (isset($_POST['IdUsuario'])) ? $_POST['IdUsuario'] : '';
$Servicos = (isset($_POST['Servicos'])) ? $_POST['Servicos'] : '';
try {
// BUSCANDO REGISTROS USUÁRIO X SERVIÇO
$sql = "SELECT
`gasServico`.IdServico,
`gasUsuarioServico`.IdUsuario
FROM
`gasServico`
INNER JOIN `gasUsuarioServico` ON (`gasServico`.IdServico = `gasUsuarioServico`.IdServico)
WHERE
(`gasUsuarioServico`.IdServico = `gasServico`.IdServico) AND
(`gasUsuarioServico`.IdUsuario = ?) AND
(`gasServico`.IdInterface = ?)";
$stm = $conexao->prepare($sql);
// DEFINE O TIPO DA VARIÁVEL PDO::PARAM_INT OU STR
$stm->bindValue(1, $IdUsuario, PDO::PARAM_INT);
$stm->bindValue(2, $IdInterface, PDO::PARAM_INT);
$stm->execute();
$ResDados = $stm->fetchAll(PDO::FETCH_OBJ);
// CONTAGEM DE REGISTROS RETORNADOS
$conProd = count($ResDados);
// FECHANDO A CONSULTA
$stm->closeCursor();
// DELETANDO REGISTROS USUÁRIO X SERVIÇO
foreach ($ResDados as $DadosUsuarioServico) {
try{
$IdUsuario = $DadosUsuarioServico->IdUsuario;
$IdServico = $DadosUsuarioServico->IdServico;
$sql = "DELETE FROM `gasUsuarioServico` WHERE `IdUsuario` = ? AND `IdServico` = ?";
$stm = $conexao->prepare($sql);
$stm->bindValue(1, $IdUsuario, PDO::PARAM_INT);
$stm->bindValue(2, $IdServico, PDO::PARAM_INT);
$stm->execute();
$retorno = array('codigo' => '1', 'mensagem' => ' Serviços excluídos com sucesso');
} catch(PDOException $erro) {
$erro = $erro->getMessage();
$retorno = array('codigo' => '0', 'mensagem' => ' Erro ao deletar os serviços. Tente novamente. ::$erro');
}
}
// GRAVANDO OS CHECKS MARCADOS
if ($Servicos != "") {
try {
foreach($Servicos as $IdServico) {
// INSERT
$crud = $conexao->prepare("INSERT INTO gasUsuarioServico (IdUsuario, IdServico) VALUES (?, ?)");
$crud->bindParam(1, $IdUsuario , PDO::PARAM_INT);
$crud->bindParam(2, $IdServico , PDO::PARAM_INT);
$crud->execute();
$retorno = array('codigo' => '1', 'mensagem' => ' Serviços inseridos com sucesso');
}
} catch(PDOException $erro) {
$erro = $erro->getMessage();
$retorno = array('codigo' => '0', 'mensagem' => ' Erro ao inserir os serviços. Tente novamente. ::$erro');
}
}
// BUSCANDO REGISTROS USUÁRIO X SERVIÇO
$sqlInterface = "
SELECT
gasUsuarioServico.IdUsuario,
gasUsuarioServico.IdServico,
gasServico.IdInterface
FROM
gasUsuarioServico
INNER JOIN gasServico ON (gasUsuarioServico.IdServico = gasServico.IdServico)
WHERE
(gasUsuarioServico.IdUsuario = ?) AND
(gasServico.IdInterface = ?)";
$stm = $conexao->prepare($sqlInterface);
// DEFINE O TIPO DA VARIÁVEL PDO::PARAM_INT OU STR
$stm->bindValue(1, $IdUsuario, PDO::PARAM_INT);
$stm->bindValue(2, $IdInterface, PDO::PARAM_INT);
$stm->execute();
$ResDadosInterface = $stm->fetchAll(PDO::FETCH_OBJ);
// CONTAGEM DE REGISTROS RETORNADOS
$conSqlDel = count($ResDadosInterface);
// FECHANDO A CONSULTA
$stm->closeCursor();
// DELETANDO REGISTROS USUÁRIO X INTERFACE
if ($conSqlDel == 0) {
try {
$sql = "DELETE FROM gasUsuarioInterface WHERE gasUsuarioInterface.IdUsuario = ? AND gasUsuarioInterface.IdInterface = ?";
$stm = $conexao->prepare($sql);
$stm->bindValue(1, $IdUsuario, PDO::PARAM_INT);
$stm->bindValue(2, $IdInterface, PDO::PARAM_INT);
$stm->execute();
$retorno = array('codigo' => '1', 'mensagem' => ' Interfaces do usuários deletadas com sucesso');
} catch(PDOException $erro) {
$erro = $erro->getMessage();
$retorno = array('codigo' => '0', 'mensagem' => ' Erro ao deletar interfaces para o usuário. Tente novamente. ::$erro');
}
} else {
// BUSCANDO REGISTROS INTERFACES
$sqlInterfaceReg = "
SELECT * FROM
gasUsuarioInterface
WHERE
(gasUsuarioInterface.IdUsuario = ?) AND
(gasUsuarioInterface.IdInterface = ?)";
$stm = $conexao->prepare($sqlInterfaceReg);
// DEFINE O TIPO DA VARIÁVEL PDO::PARAM_INT OU STR
$stm->bindValue(1, $IdUsuario, PDO::PARAM_INT);
$stm->bindValue(2, $IdInterface, PDO::PARAM_INT);
$stm->execute();
$ResUsuarioInterface = $stm->fetchAll(PDO::FETCH_OBJ);
$countInsert = count($ResUsuarioInterface);
// FECHANDO A CONSULTA
$stm->closeCursor();
if ($countInsert == 0) {
try {
// INSERT USUÁRIO X INTERFACE
$crud = $conexao->prepare("INSERT INTO gasUsuarioInterface (IdUsuario, IdInterface) VALUES (?, ?)");
$crud->bindParam(1, $IdUsuario , PDO::PARAM_INT);
$crud->bindParam(2, $IdInterface , PDO::PARAM_INT);
$crud->execute();
$retorno = array('codigo' => '1', 'mensagem' => ' Interfaces do usuários inseridas com sucesso');
} catch(PDOException $erro) {
$erro = $erro->getMessage();
$retorno = array('codigo' => '0', 'mensagem' => ' Erro ao deletar interfaces para o usuário. Tente novamente. ::$erro');
}
}
}
} catch (Exception $e) {
echo $e->getMessage();
}
// FECHA CONEXÃO
$conexao = null;
// RETORNO DE MENSAGEM
echo json_encode($retorno);
exit();
That answer might help you What Try/Catch Blocks are for and when they should be used?
– DNick