Ir para conteúdo

POWERED BY:

Arquivado

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

JorgitoDF

Cadastro com tabelas relacionadas com Chave Estrangeira (FK)

Recommended Posts

Boa noite,

 

Será que alguém pode me ajudar nessa?

 

Preciso fazer um cadastro de cliente PJ e salvar os dados inseridos no formulário no banco de dados e antes de finalizar o cadastro do cliente PJ, tenho que cadastrar o contato deste cliente PJ, onde os dados serão inseridos em outro formulário (em outra tela) que será aberta quando um botão cadastrar contato for clicado, pois os dados do contato do cliente PJ serão salvos na tabela CONTATO que está relacionada com a tabela CLIENTE (a PK da tabela CLIENTE é a FK na tabela CONTATO), relacionamento 1:N, pois um cliente PJ pode ter vários contatos (vários funcionários como contato) e um contato (um funcionário que trabalha neste cliente PJ) pertence somente a este único cliente PJ.

Quando os dados do contato forem inseridos no formulário de cadastro de contato ao clicar no botão submit estes dados deverão ser gravado na tabela CONTATO que está relacionada com a tabela CLIENTE. Até ai consegui fazer.

A minha dificuldade é como salvar no banco de dados os dados do contato do cliente que está sendo cadastrado e passar o valor da PK do cliente que esta sendo cadastrado no cadastro do seu contato, pois a PK do cliente virá como FK no contato.

 

Os campos da tabela de cliente são: id_cliente (PK), nome e endereco.

Os campos da tabela de contato são: id_contato (PK), nomecontato e id_cliente(FK).

 

O código que recebe os valores do formulário do cadastro do contato está assim:

 

$nomecontato = $_POST["nomecontato"];

$endereco = $_POST["endereco"];

 

$sql = "INSERT INTO contato (nomecontato, endereco) VALUES ('$nomecontato','$endereco')";

 

Como eu passo o id_cliente para desta forma:

 

$sql = "INSERT INTO contato (nomecontato, endereco, id_cliente) VALUES ('$nomecontato','$endereco', '$idcliente')";

 

Alguém pode me ajudar nessa?

 

Gratos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual SGBD está utilizando??? MySQL???

Se for, basta utilizar a função mysql_insert_id() ou equivalente:

:seta: http://br.php.net/mysql_insert_id/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas se vários usuários tiverem fazendo mais de um cadastro ao mesmo tempo, esta função mysql_insert_id() funcionará corretamente?

 

Henrique,

 

Testei esta função mysql_insert_id() e notei que o valor da ID é impresso em tela, no meu caso eu não quero imprimir o valor da ID, tenho que capturar o valor da ID e salvar junto com o $sql = "INSERT INTO contato (nomecontato, endereco, id_cliente) VALUES ('$nomecontato','$endereco', '$idcliente')";

 

Esta função é executada sempre após o "INSERT" como faço para jogar o valor da ID capturada no comando INSERT???

 

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites
Mas se vários usuários tiverem fazendo mais de um cadastro ao mesmo tempo, esta função mysql_insert_id() funcionará corretamente?

Sim, funciona... o próprio SGBD cuida disso pra você, não precisa se preocupar.

 

Testei esta função mysql_insert_id() e notei que o valor da ID é impresso em tela, no meu caso eu não quero imprimir o valor da ID, tenho que capturar o valor da ID e salvar junto com o $sql = "INSERT INTO contato (nomecontato, endereco, id_cliente) VALUES ('$nomecontato','$endereco', '$idcliente')";

 

Como você testou??? Se testou com um echo vai mostrar na tela mesmo, faça assim:

$query = mysql_query('INSERT INTO ... ');
$lastId = mysql_insert_id();
//...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Teste assim:

 

$query = mysql_query("INSERT INTO ....");

printf("%d\n", mysql_insert_id());

 

tentei fazer assim: $lastId = ("%d\n", mysql_insert_id()); e também não funciona........

 

Estou fazendo algo errado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

printf mostra na tela, uai...

Assim você armazena o valor em uma variável...

$lastId = mysql_insert_id();

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde Galera !

 

Preciso de uma ajuda estou usando esse comando mysql_insert_id() e guardadno o valor dele numa variavel, mas preciso agora resgatar essa variavel na minha pagina html e dar insert nela em outro formulario, estou trabalhando assim test.html cadastrar.php indica.php e conexao.php

 

então o negocio é que o usuario envia seu email gerando esse id e depois da dar o insert preciso resgatar esse valor e enviar para um campo input hidden e dar o insert na outra tabela e não to conseguindo fazer a function no jquery para repassar esse valor.

 

esse é o teste.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="BR" lang="PT-BR">
    <head>
		<title>teste</title>
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>			
	
		
  </head>
  
	<script type="text/javascript">
		$(document).ready(function(){
			$("#btnEnviar").click(function(){
				$.post("cadastrar2.php", {email:$("#emailUser").val()},function(dados){
						if(dados == 0)
							alert("Este e-mail ja foi cadastrado!")	
						else
						{ 
							if (dados == 1)
							{
								alert("E-mail cadastrado com sucesso!")
																
								$("#popup").show(1000);
								
							}
							else
							{
								alert("Erro")
							}
						}	
					 
					 });		
			});			
			$("#btnIndicar").click(function(){
				$.post("indica.php", {indica1:$("#indica1").val(),indica2:$("#indica2").val(),indica3:$("#indica3").val()}, function(dados){
			        		
					if(dados == 1)
					{
						alert("Indicação cadastrada com sucesso!")
						$("#popup").hide();
						$("#redesociais").show();
					}
					else
					{
						alert("erro")
					}
				})
			});			
		});					
	</script>

  <body>
	<form>
		<input type='text' name='emailUser'  id="emailUser" size='50'>
		<input type="button" id="btnEnviar" value="Enviar">	
	</form>
	

	<div id="popup" style="display:none; position:absolute;float:left;width:290px; height:420px;margin-top:-20px;margin-left:50px; 
			-webkit-border-radius: 18px;-moz-border-radius: 18px;border-radius: 18px;border: solid 6px #8B0000;
			-webkit-box-shadow: #666 0px 5px 8px;-moz-box-shadow: #666 0px 5px 8px;	box-shadow: #666 0px 5px 8px; background:#FFFFFF;" >
			
			<a href='javascript:;' onclick='$("#popup").hide(); window.location="teste.html"'><img src="images/fechar.jpg" style="border:0; margin-left:250px;"></a><br>
			<label class="texto">Indique 3 amigos e aumente suas chances de ser o primeiro a testar!</label>
			<input type="text" name="iduser" id="iduser" value="<?php echo $id_email;?>" />
			<br><br><label style="margin-left:10px;">Indicação 1:</label><br><input type="text" name="indica1" id="indica1" placeholder="Faça sua indicação" style="margin-left:10px; -webkit-border-radius: 10px;-moz-border-radius: 10px;border-radius: 10px;border: solid 1px #000; height:30px; width:250px;">
			<br><br><label style="margin-left:10px;">Indicação 2:</label><br><input type="text" name="indica2" id="indica2" placeholder="Faça sua indicação" style="margin-left:10px; -webkit-border-radius: 10px;-moz-border-radius: 10px;border-radius: 10px;border: solid 1px #000; height:30px; width:250px;">
			<br><br><label style="margin-left:10px;">Indicação 3:</label><br><input type="text" name="indica3" id="indica3" placeholder="Faça sua indicação" style="margin-left:10px; -webkit-border-radius: 10px;-moz-border-radius: 10px;border-radius: 10px;border: solid 1px #000; height:30px; width:250px;">
			<br><br><center><input type="button" value="Indicar" id="btnIndicar" >
			
		</div>
		<div id="redesociais" style="display:none; position:absolute;float:left;width:290px; height:420px;margin-top:-20px;margin-left:50px; 
			-webkit-border-radius: 18px;-moz-border-radius: 18px;border-radius: 18px;border: solid 6px #8B0000;
			-webkit-box-shadow: #666 0px 5px 8px;-moz-box-shadow: #666 0px 5px 8px;	box-shadow: #666 0px 5px 8px; background:#FFFFFF;" >
			<a href='javascript:;' onclick='$("#redesociais").hide(); window.location="teste.html"'><img src="images/fechar.jpg" style="border:0; margin-left:250px;"></a>
			<br><label style="margin-left:10px;">Compartilhe essa ideia com seus amigos!</label><br>
			
			
		</div>
  </body>
</html>

cadastrar.php

 

<?php
	include("conexao.php");	
	$emailUser=$_POST['email'];		
	
	$hndl=mysql_query("INSERT INTO contato_landing_page (email) VALUES ('$emailUser')");
	$id_email = mysql_insert_id();
	if(!$hndl)
	{
		echo"0";
	}
	else
	{			
		echo"1";		
	}
		
?>

o indica.php

 

<?php
	include("conexao.php");
	
	
	$indicacao1=$_POST['indica1'];
	$indicacao2=$_POST['indica2'];
	$indicacao3=$_POST['indica3'];
	
	
	$hndl=mysql_query("SELECT max(id_email)FROM contato_landing_page");
	if($hndl)	
	{
		$nrows = mysql_num_rows($hndl);
		$row = mysql_fetch_row($hndl);
		$lastID = $row[0];		
		$hndl=mysql_query("INSERT INTO indicacao_landing_page (indica1, indica2, indica3, id_email ) VALUES ('$indicacao1','$indicacao2','$indicacao3','$lastID')");
		
		if($hndl)
		{
			echo"1";
		}
		else
		{
			echo"2";
			
		}
	}
	
?>

e ai alguem pode dar uma mãozinha?



opss o que esta no indica.php foi uma outra maneirque achei mas não é confiavel se varias pessoas estiverem fazendo isso ao mesmo tempo e me indicaram o mysql_insert_id()

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.