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