Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

neotheone

Inserçao em 3 tabelas no mesmo documento

Recommended Posts

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.