Ir para conteúdo

POWERED BY:

Arquivado

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

Sibila Jessye Darienso

insert

Recommended Posts

Oie, tenho pouco experiência com programação php, já que estou iniciando agora... Meu problema é o seguinte, tenho duas tabelas, uma de Produto e outra de Livro... Foi definida a chave estrangeira:

 

alter table livro add FOREIGN KEY (cod_livro) references produto (cod_prod) on update restrict on delete restrict;

 

Tabela Produto (Campos): cod_prod, descricao, tipo, promocao, da_ini, data_fim, valor_promo, imagem, link

 

Tabela Livros (Campos): cod_livro, autor sinopse

 

Bom tenho uma tela onde cadastro os produtos, livros e cds que possuem campos em comum (descricao, tipo, promocao, imagem...)

 

E na tela, que eu chamei de inserelivro.php, não consigo cadastrar... Segue o código abaixo, para alguém me ajudar...

 

<?php

include("conexao.php");

 

$autor=$_POST['edtautor'];

$sinopse=$_POST['edtsinopse'];

 

if ((!$autor) || (!$sinopse)){

if (!$autor){

echo '<script>alert("Preencha o campo Autor!!!")</script>';

}

if (!$sinopse){

echo '<script>alert("Preencha o campo Sinopse!!!")</script>';

}

}else{

 

$dado="insert into livro,produto (cod_livro, autor, sinopse) values ('cod_prod', '$autor', '$sinopse')";

echo $dado;

}

?>

 

No caso peço pra ele mostrar na tela, a instrução sql, e a reposta que tenho:

 

insert into livro,produto (cod_livro, autor, sinopse) values ('cod_prod', 'adfasd', 'asdfasd')

 

Ou seja ele preenche os campos do autor e sinopse, porém o campo da chave estrangeira não. MEU MAIOR PROBLEMA: Como faço pra inserir o mesmo codigo do produto, para o campo do código livro????

Compartilhar este post


Link para o post
Compartilhar em outros sites

mysql_insert_id()

http://php.net/manual/pt_BR/function.mysql-insert-id.php

 

 

 

para descobrir o motivo de não funcionar, coloque o or die()

$dado="insert into livro,produto (cod_livro, autor, sinopse) values ('cod_prod', '$autor', '$sinopse')";
mysql_query( $dado )or die( mysql_error() );

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é possível inserir dados em duas tabelas no mesmo sql, o que deve fazer é:

 

INSERT INTO tabela1 (cod,nome,valor) VALUES (1,'nome','55,00');

INSERT INTO tabela2 (cod,nome,valor) VALUES (1,'nome','55,00');

 

Pelo menos é assim que conheço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu não quero adicionar nas duas, o problema é que eu tenho uma tabela chamada LIVRO e outra PRODUTO.

 

Quando cadastro o produto ele gera um código.

 

Dessa maneira, eu preciso inserir esse mesmo código na tabela livro, e cadastrar o autor e a sinopse...

 

Ou seja pegar o cod_prod e fazer com que esse mesmo número fique em cod_livro.

 

Não é possível inserir dados em duas tabelas no mesmo sql, o que deve fazer é:

 

INSERT INTO tabela1 (cod,nome,valor) VALUES (1,'nome','55,00');

INSERT INTO tabela2 (cod,nome,valor) VALUES (1,'nome','55,00');

 

Pelo menos é assim que conheço!

 

 

Eu não quero adicionar nas duas, o problema é que eu tenho uma tabela chamada LIVRO e outra PRODUTO.

 

Quando cadastro o produto ele gera um código.

 

Dessa maneira, eu preciso inserir esse mesmo código na tabela livro, e cadastrar o autor e a sinopse...

 

Ou seja pegar o cod_prod e fazer com que esse mesmo número fique em cod_livro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ou seja pegar o cod_prod e fazer com que esse mesmo número fique em cod_livro.

a função mysql_insert_id() resolve isso para você.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema apresentado é: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'produto (cod_livro, autor, sinopse) values ('cod_prod', 'dfadf',

 

Mas, o meu é como vou pegar o cod_prod e adicionar no cod_livro, mais os campos que preciso preencher autor e sinopse...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pegue os posts($_POST, dados do formulário) insere o produto normal e segue a dica do William Bruno.

Compartilhar este post


Link para o post
Compartilhar em outros sites

a função mysql_insert_id() resolve isso para você.

 

 

Bom, William ainda não funcionou. A resposta que obtive foi: Last inserted record has id 0.

 

Funciona assim, é uma Livraria virtual, onde tenho as tabelas:

 

Tabela Produto (Campos): cod_prod, descricao, tipo, promocao, da_ini, data_fim, valor_promo, imagem, link

 

Tabela Livros (Campos): cod_livro, autor sinopse

Onde defini a chave estrangeira no banco de dados através: alter table livro add FOREIGN KEY (cod_livro) references produto (cod_prod) on update restrict on delete restrict;

 

Tabela CD (Campos):cod_cd, faixas

Onde defini a chave estrangeira no banco de dados através: alter table cd add FOREIGN KEY (cod_cd) references produto (cod_prod) on update restrict on delete restrict;

 

Então, eu criei uma tela com os campos Descricao, Caixa com o tipo que ele deve escolher se é Livro(1) ou CD(2), valor, imagem e link. Fiz outra tela, onde ele seleciona o produto cadastrado, e se for livro ele mostra uma tela com os campos autor e sinopse para serem preenchidos, da mesma forma o cd.

 

normalmente eu faria um insert:

$dado="insert into livro (autor, sinopse) values ('$autor', '$sinopse')";

mas, o problema aqui está sendo pegar o cod_prod já cadastrado quando o usuário faz na tela de Cadastro de Produto, e passar para a tabela de Livro, no campo cod_livro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, me responde o seguinte:

 

-> você faz os 2 inserts no mesmo momento ? ou

-> o cara insere uma coisa, e depois vai para outra ?

 

é necessário q você explique o fluxo do cadastro. Isso q você disse agora, eu já tinha entendido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, então você vai ter q salvar o ID retornado do mysql_insert_id() em uma session, ou então fazer um <select> para que na outra tela, o seu cliente selecione o registro q ele cadastrou anteriormente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

$dado="insert into livro,produto (cod_livro, autor, sinopse) values ('cod_prod', '$autor', '$sinopse')";

echo $dado;

 

 

Tente assim:

 

$produto = "INSERT INTO produtos (a, b ,c, d) VALUES ('$a', '$b', '$c', '$d')";
mysql_query($produto);

$id = mysql_insert_id();

$livro = "INSERT INTO livros (e, f, g) VALUES ('$id', '$f', '$g')";
mysql_query($livro);

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.