Ir para conteúdo

POWERED BY:

Arquivado

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

Essinho

Como fazer o inset em 3 tabelas ao mesmo tempo, relacionado-as

Recommended Posts

olá amigos!

 

estou com um probleminha pra pra inserir alguns campos no meu banco...

 

eu tenho nele uma tabela contato, uma usuario e uma nivel_usuario.

 

Em uma pagina com formulario eu precisaria colocar todos os campos necessarios, como:

usuario

nome, login, senha,

 

contato

email, tel, cel

 

nivel_usiario

nivel

 

todos esses campos (nome, login, senha, email...) estariam no form, ai quando eu precionasse o submit seria inserido no banco os dados relacionado por um id.

 

dei umas olhadas por ai e vi algo assim

INSERT INTO xxx (SELECT x, y FROM foo JOIN bar USING (y) WHERE z = 1);

mais pra ser sincero naum intendi muito

 

alguem pode me ajudar? http://forum.imasters.com.br/public/style_emoticons/default/grin.gif

 

vlwW http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

 

Você vai ter que fazer o seguinte:

Quando clicar em Submit...

 

1º inserir:

Inserir os dados de usuario:

Na tabela tem que ter o seguinte:

usuarioID, nome, login, senha.

$sql = "INSERT INTO usuario(nome, login, senha.)

VALUES('".$nome."', '".$login."', '".$senha."') ";

 

 

2º inserir:

Faz um select assim para pegar o usuarioID que você acabou de adicionar por exemplo:

$sqlultimoID = "SELECT LAST_INSERT_ID(usuarioID) AS ultimoID

FROM usuario

ORDER BY usuarioID DESC

LIMIT 1";

$qryultimoID = mysql_query($sqlultimoID) or die ("ERRO no SQL ULT ID: ".mysql_error()."<br><br>".$sqlultimoID);

$regultimo = mysql_fetch_array($qryultimoID);

 

 

Agora faz o inserir contato:

$sql = "INSERT INTO contato(usuarioID, email, tel, cel)

VALUES('".$regultimo[ultimoID]."', '".$email."', '".$tel."', '".$cel."') ";

 

3ºInsert:

Faz a mesma coisa:

$sql = "INSERT INTO nivelusuario(usuarioID, nivel)

VALUES('".$regultimo[ultimoID]."', '".$nivel."') ";

 

Entendeu? todos vão usar o $regultimo[ultimoID] que foi colocado la no usuario, assim vai relacionar uma e outra tabela.

 

Qualquer coisa posta ai.

 

 

 

 

 

 

 

 

 

 

$regultimo[ultimoID]

Compartilhar este post


Link para o post
Compartilhar em outros sites

opa!

vlw aew diego...

 

mais cara, se por alguma coincidendia

acontecer de 2 usuarios estar fazendo o cadastro no mesmo instante

isso nao poderia da conflito?

 

esse select nao poderia da conflito...

 

c nao acha q seria melhor eu fazer o select pelo email... e dpois tentar associar de alguma forma as outras tabelas com o ID onte tem akele email?

 

http://forum.imasters.com.br/public/style_emoticons/default/ermm.gif

 

vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu usei o select assim...

usando o where

 

$sqlultimoID = "SELECT email, LAST_INSERT_ID(id) AS ultID

FROM usuarios

WHERE email = '$email'

ORDER BY id DESC

LIMIT 1";

$qryultimoID = mysql_query($sqlultimoID) or die ("ERRO no SQL ULT ID: ".mysql_error()."<br><br>".$sqlultimoID);

$regultimo = mysql_fetch_array($qryultimoID);

 

 

vcs axam q naum seria necessario?...

para usei para ter certeza q akele seria u unico usuario

e pq tbem num entendi muito bem como funciona o LAST_INSERT_ID

:P

Compartilhar este post


Link para o post
Compartilhar em outros sites

OLA TENTEI FAZER TBM MAS NÃO DEU CERTO

O MEU CODIGO É ESSE.

cada dados tem sua tabela, mas não consigo gravar-las, alguem pode me ajudar ai

 

//pagina para realizar o seu cadastro

if(getenv("REQUEST_METHOD") == "POST") { //verfica se o formulario foi enviado

 

require "codigo.php"; //inclui o arquivo para conexao com o banco

 

$nome = $_POST['nome']; tabela1

$senha = $_POST['senha']; tabela1

$serie = $_POST['nome_serie']; tabela2

$mat = $_POST['nome_materia']; tabela3

 

$sql = "INSERT INTO tabela1 (nome, senha) VALUES('".$nome."', '".$senha."') ";

$sqlultimoID = "SELECT LAST_INSERT_ID(id) AS ultimoID FROM tabela1 ORDER BY id DESC LIMIT 1";

$qryultimoID = mysql_query($sqlultimoID) or die ("ERRO no SQL ULT ID: ".mysql_error()."<br><br>".$sqlultimoID);

$regultimo = mysql_fetch_array($qryultimoID);

$sql = "INSERT INTO tabela2 (`id`, `nome`) VALUES ('".$regultimo[ultimoID]."', '".$nome_serie."') ";

$sql = "INSERT INTO tabela3 (`id`, `nome`) VALUES ('".$regultimo[ultimoID]."', '".$nome_materia."') ";

 

<form name="login" method="post" >

Nome: <input name="nome" type="text" id="nome" size="20">

senha:<input name="senha" type="password" id="senha" size="20">

Serie: <input name="nome_serie" type="text" id="nome_serie" size="20">

Materia: <input name="nome_materia" type="text" id="nome_materia" size="20">

<input name="entrar" type="submit" id="entrar" value="Cadastrar">

</form>

 

ESTAVA TENTANDO TBM EXIBIR O CADASTRO.. MAS NENHUMA TABELA RECEBE OS DADOS VIA FORM

 

<?

include"codigo.php";

 

$y = mysql_query("SELECT nome senha FROM tabela1");

$y = mysql_query("SELECT nome_serie FROM tabela2");

$y = mysql_query("SELECT nome_materia FROM tabela3");

// selecionei a tabela que quero trabalhar que no caso e a que nois criamos no 1º passo

while($x = mysql_fetch_array($y)){ //criei um array chamado $x que sera responssavel pra listar os dados

echo'

<table align=center width=80% height="28" border="0" cellspacing="2">

<tr>

<td width="50"><strong> <font face="verdana">Nome:</font></strong></td>

<td width="254"><strong> <font color="red" face="verdana">'.$x['nome'].'</font></strong></td>

<td width="50"><strong> <font face="verdana">Senha :</font></strong></td>

<td width="200"><strong> <font color="red" face="verdana">'.$x['senha'].'</font></strong></td>

<td width="50"><strong> <font face="verdana">Nsere:</font></strong></td>

<td width="254"><strong> <font color="red" face="verdana">'.$x['nome_serie'].'</font></strong></td>

<td width="50"><strong> <font face="verdana">mta :</font></strong></td>

<td width="200"><strong> <font color="red" face="verdana">'.$x['nome_materia'].'</font></strong></td>

</tr>

 

</table>

";

?>

 

com isso queria chegar a esse resultado

 

cadastrar o usuario e sua id , na tabela2 e tabela3 automaticamente, dai quando eu fiz uma consulta atraves do login do usuario, mostrar sua serie e sua materia numa pagina restrita

 

se alguem pode me ajudar a melhorar esse codigo , não consigo achar os erros .. desde já agradeço pessoal

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só a titulo de informação:

De acordo com a documentação do Mysql, o comando LAST_INSERT_ID(), retorna o ID da ultima Inserção ou Atualização feita "pelo cliente", traduzindo: não tem como dois usuarios diferentes pegarem uma mesma ID...

Assim como, se um usuario que não deu um INSERT INTO ou UPDATE usar o comando LAST_INSERT_ID(), vai retonar um valor 0 ou "false"...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Athanasio:

Primeiro:

coloca $regultimo['ultimoID'] (com aspas simples) na consulta SQL;

 

 

Segundo, se isso que você tenha passado for o codigo todo, nao consegui encontrar a consulta de inserção; :õ

 

abraço

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.