start transaction e commit - como usar?
Fala pessoal beleza?
Tenho uma dúvida com relação ao usado do start transaction e commit. No exemplo abaixo, onde eu uso algumas funções, eu faço insert em 2 funções diferentes, porém se 1 insert não se concretizar o outro também não pode, senão dará inconsistencia na base:
Nas funções: function cadastra_evento
function cadastra_classes
Se der error na inserção na função cadastra_classes, é preciso da rollback no insert que foi realizado na função cadastra_evento, como obter este controle?
<?php
session_start();
include_once("../../conexao/conexao.php");
include_once("../../js/funcoes.php");
?>
<?php
function processa_cadastro($id_entidade, $titulo, $dataInicio, $dataFim, $local, $descricao, $classe, $nome1, $nome_temp1, $tamanho1, $tipo1, $nome2, $nome_temp2, $tamanho2, $tipo2, $nome3, $nome_temp3, $tamanho3, $tipo3, $conexao)
{
if( (empty($titulo)) or (empty($dataInicio)) or (empty($dataFim)) or (empty($local)) or (empty($descricao)) or (empty($classe)) )
{
$mensagem = "Ocorreu um erro na hora de efetuar o cadastro.";
echo "<script>alert('$mensagem')</script>";
echo "<script>location.href='cadastro_Evento.php'</script>";
}
else
{
cadastra_evento($id_entidade, $titulo, $dataInicio, $dataFim, $local, $descricao, $classe, $nome1, $nome_temp1, $tamanho1, $tipo1, $nome2, $nome_temp2, $tamanho2, $tipo2, $nome3, $nome_temp3, $tamanho3, $tipo3, $conexao);
}
}
[b]function cadastra_evento($id_entidade, $titulo, $dataInicio, $dataFim, $local, $descricao, $classe, $nome1, $nome_temp1, $tamanho1, $tipo1, $nome2, $nome_temp2, $tamanho2, $tipo2, $nome3, $nome_temp3, $tamanho3, $tipo3, $conexao)[/b]
{
$query = "INSERT INTO tbl_eventos
(titulo, dataInicio, dataFim, local, descricao, aviso_regata, instrucao_regata, releas, fk_id_entidade)
values
('$titulo', '$dataInicio', '$dataFim', '$local', '$descricao', '$nome1', '$nome2', '$nome3', '$id_entidade')";
mysql_query($query, $conexao);
$linhas_afetadas = mysql_affected_rows($conexao);
if($linhas_afetadas > 0)
{
$id = mysql_insert_id($conexao);
cadastra_classes($id_entidade, $id, $titulo, $dataInicio, $dataFim, $local, $descricao, $classe, $nome1, $nome_temp1, $tamanho1, $tipo1, $nome2, $nome_temp2, $tamanho2, $tipo2, $nome3, $nome_temp3, $tamanho3, $tipo3, $conexao);
$mensagem = "Cadastro realizado com sucesso.";
echo "<script>alert('$mensagem')</script>";
echo "<script>location.href='cadastro_Evento.php'</script>";
}
}
[b]function cadastra_classes($id_entidade, $id, $titulo, $dataInicio, $dataFim, $local, $descricao, $classe, $nome1, $nome_temp1, $tamanho1, $tipo1, $nome2, $nome_temp2, $tamanho2, $tipo2, $nome3, $nome_temp3, $tamanho3, $tipo3, $conexao)[/b]
{
foreach($classe as $c)
{
$query = "INSERT INTO tbl_classe_evento
(fk_classe, fk_evento, fk_id_entidade)
values
('$c', '$id', '$id_entidade')";
mysql_query($query, $conexao);
}
upload_arquivos($id_entidade, $id, $titulo, $dataInicio, $dataFim, $local, $descricao, $classe, $nome1, $nome_temp1, $tamanho1, $tipo1, $nome2, $nome_temp2, $tamanho2, $tipo2, $nome3, $nome_temp3, $tamanho3, $tipo3, $conexao);
}
function upload_arquivos($id_entidade, $id, $titulo, $dataInicio, $dataFim, $local, $descricao, $classe, $nome1, $nome_temp1, $tamanho1, $tipo1, $nome2, $nome_temp2, $tamanho2, $tipo2, $nome3, $nome_temp3, $tamanho3, $tipo3, $conexao)
{
mkdir($id);
$nova_pasta = $id."/";
move_uploaded_file($nome_temp1, $nova_pasta.$nome1);
move_uploaded_file($nome_temp2, $nova_pasta.$nome2);
move_uploaded_file($nome_temp3, $nova_pasta.$nome3);
/*
if($file_type != "application/msword")
{
}
else if($file2_type != "application/msword")
{
}
*//*
move_uploaded_file($nome_temp1, $nova_pasta);
move_uploaded_file($nome_temp2, $nova_pasta);
move_uploaded_file($nome_temp3, $nova_pasta);
*/
}
$id_entidade = $_SESSION["id"];
$titulo = $_POST["titulo"];
$dataInicio = converteData($_POST["theDateInicio"]);
$dataFim = converteData($_POST["theDateFim"]);
$local = $_POST["local"];
$descricao = $_POST["descricao"];
$classe = $_POST["classe"];
$nome1 = $_FILES['file']['name'];
$nome_temp1 = $_FILES['file']['tmp_name'];
$tamanho1 = $_FILES['file']['size'];
$tipo1 = $_FILES['file']['type'];
$nome2 = $_FILES['file2']['name'];
$nome_temp2 = $_FILES['file2']['tmp_name'];
$tamanho2 = $_FILES['file2']['size'];
$tipo2 = $_FILES['file2']['type'];
$nome3 = $_FILES['file3']['name'];
$nome_temp3 = $_FILES['file3']['tmp_name'];
$tamanho3 = $_FILES['file3']['size'];
$tipo3 = $_FILES['file3']['type'];
processa_cadastro($id_entidade, $titulo, $dataInicio, $dataFim, $local, $descricao, $classe, $nome1, $nome_temp1, $tamanho1, $tipo1, $nome2, $nome_temp2, $tamanho2, $tipo2, $nome3, $nome_temp3, $tamanho3, $tipo3, $conexao);
?>Discussão (1)
Carregando comentários...