neotheone 0 Denunciar post Postado Setembro 5, 2008 Fala pessoal beleza? Imagine o seguinte cenário, eu possuo um formulário onde possui 6 campos e quando eu dou submit no formulário ele chama uma página PHP onde é responsável pelo cadastro das informações. Porém eu uso 3 tabelas diferentes do banco, eu gravo 2 inputs em uma tabela (tb1) 2 inputs em outra tabela (tb2) e os 2 inputs finais gravo em uma terceira tabela(tb3), porém como posso ter certeza q todos os dados foram cadastrados com sucesso? Pois no meio da execucao da página pode ter um pique de luz e vamos imaginar que somente as 2 primeiras tabelas vao receber os dados corretamente a 3º tabela nao recebeu os dados e pra mim isso causaria inconsistencia, entao como posso ter o controle disso? valew pessoal Compartilhar este post Link para o post Compartilhar em outros sites
Prog 183 Denunciar post Postado Setembro 5, 2008 Você pode usar transações, desta forma você garante que todo o processo seja concluído ou nenhum, não há meio termo. Leia mais: http://dev.mysql.com/doc/refman/5.0/en/commit.html Compartilhar este post Link para o post Compartilhar em outros sites
neotheone 0 Denunciar post Postado Setembro 5, 2008 você podia me dar um exemplo usando insert? Compartilhar este post Link para o post Compartilhar em outros sites
giesta 29 Denunciar post Postado Setembro 6, 2008 START TRANSACTION; INSERT INTO clientes values('123','Marcos'); INSERT INTO compras values('123','MAQUINA FOTOGRAFICA'); INSERT INTO email values('123','marcos@gmail.com'); COMMIT; Vale lembrar q a consistencia (ou faz tudo ateh o fim ou reverte a parada toda) soh funciona em bases InnoDB embora você possa dar START TRANSACTION em bases MyISAM apesar de nao ter efeito nenhum Compartilhar este post Link para o post Compartilhar em outros sites
neotheone 0 Denunciar post Postado Setembro 6, 2008 Giesta acho q estou entendendo, veja essas minhas 2 funções abaixo, como você pode ver eu dou insert em tbl_eventos e na outra função faço insert na tbl_classe_evento, eu teria q por start transaction commit em que parte neste meu exemplo? brigado pela ajuda 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) { $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>"; } } 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) { 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); } } Compartilhar este post Link para o post Compartilhar em outros sites