Ir para conteúdo

POWERED BY:

Arquivado

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

Moran

[Resolvido] chave estrangeira

Recommended Posts

E ai pessoal.

Bom pe a primeira vez que estou usando chave estrangeira em um programa . gostaria de uma ajuda.

 

bom tenho o seguinte INSERT

 

 $add_sql = "INSERT INTO carrinho (id_carrinho, quantidade,sessao,cliente_id_cliente, produto_id_produtos)
VALUES
('','".$row_rs_produto['quantidade']."','".session_id()."','".$row_rs_produto['cliente_id_cliente']."','".$row_rs_produto['produto_id_produtos']."')";

 

ta me retornado o seguinte erro.

 

Notice: Undefined index: quantidade in C:\xampp\htdocs\site\Area-usuario\prod\carrinho-user.php on line 41

 

Notice: Undefined index: cliente_id_cliente in C:\xampp\htdocs\site\Area-usuario\prod\carrinho-user.php on line 41

 

Notice: Undefined index: produto_id_produtos in C:\xampp\htdocs\site\Area-usuario\prod\carrinho-user.php on line 41

Cannot add or update a child row: a foreign key constraint fails (`mydb`.`carrinho`, CONSTRAINT `fk_carrinho_cliente` FOREIGN KEY (`cliente_id_cliente`) REFERENCES `cliente` (`id_cliente`) ON DELETE NO ACTION ON UPDATE NO ACTION)

 

Se eu fizer um insert direto no banco de dados, da certinho.

INSERT INTO carrinho (id_carrinho, quantidade,sessao,cliente_id_cliente, produto_id_produtos)
   VALUES
('2','4','hgjkhgjhg','5','7');

 

Mas nesse caso eu estou definindo manualmente o valor das chaves estrangeiras cliente_id_cliente e produto_id_produtos.

Eu sei que na tabela cliente eu tenho um id_cliente com o valor 5 e na tabela produto eu tenho um id_produtos com o valor 7.

Espero estar sendo claro.

 

 

 

Nao sei o que eu estou esquecendo.

Agradeço pela ajuda.

 

Tão complicado assim.

 

=/

Compartilhar este post


Link para o post
Compartilhar em outros sites

complicado...

 

talvez não para uns, e sim para outros,

mas a maioria encontra-se na mesma situação que eu, trabalhando, e por sinal estou cheio de scripts para arrumar e fazer, por isso a demora,

 

 

verifica se a tua consulta(SELECT) no banco de dados está saindo tudo ok...ja que você ta inserindo é uma coluna do próprio banco

 

ex:

 

$row_rs_produto['quantidade'];

 

isso é uma coluna do seu banco, certo? logo antes de você executar o "insert", veja se essa variável ta recebendo o dado do banco.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pesso desculpas, me expressei mau.

Não quis dizer que esteja complicado algume me responder.

Quis dizer que o problema para mim desse jeito que to fazendo esta complicado.

 

Valeu Txai, mas uma vez hoje tais me ajudando.

Estou no trabalho agora, quando estiver em casa testarei e posto o resultado aqui.

 

 

Obrigado a todos que tentaram me ajudar.

 

bom na verdade. eu tava pensando assim...

 

 

por exemplo...

 

eu tenho 3 colunas

cliente | Produto | carrinho

 

 

a tabela cliente eu vou ter

|Cliente|

---------

| ID_CLI |

| NOME_CLI |

 

Tabela Produto

|Produto|

---------

|ID_produto|

| produto |

 

Tabela Carrinho

|Carrinho|

----------

|ID_carrinho|

|sessao |

|cliente_id_cli| <= chave estrangeira da tabela cliente.

|produto_id_produto| <= Chave estrangeira da tabela produto.

 

 

 

para fazer um insert eu tenho fazer assim

 

insert into carrinho (id_carrinho,sessao,cliente_id_cli,produto_id_produto) values ('1','ashdjashd','5','7')

eu coloquei o valor 5 e 7, sabendo que existe nas tabelas cliente e produto os valores.

 

desse maneira está correto ?

se depois eu quiser ver o que esta na tabela carrinho, eu vou conseguir ver os dados do produto e do cliente ???

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim, está totalmente correto, mas vale lembrar que os dados que você verá, caso faça um SELECT * FROM carrinho, será apenas os que estão na tabela, os da tabela cliente não serão mostrados(só a FK), para fazer aparecer os dados da tabela cliente tens que fazer um SELECT + um JOIN, o que você estava fazendo antes estava certo, só que como você esta usando dados do próprio banco de dados, você tem que fazer um select antes do insert.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom.. Testei o select. ta funcionando ...

vou colocar o resto do codigo pois pode ser algo que eu errei antes..

 

include "../../cria-session/validar-session-usuario2.php";
include "../../config-db/config-db.php";

   $acao = $_GET['acao'];
   $produto = $_GET['produto'];

   if ($acao == "incluir")
   {
   if ($produto != '')
   {
   if (is_numeric($produto))
   {

   $query_rs_carrinho = "SELECT * FROM carrinho WHERE carrinho.produto_id_produtos= '".$produto."' AND carrinho.sessao = '".session_id()."'";
   $rs_carrinho = mysql_query($query_rs_carrinho, $conn) or die(mysql_error());

   $row_rs_carrinho = mysql_fetch_assoc($rs_carrinho);
   $totalRows_rs_carrinho = mysql_num_rows($rs_carrinho);


   if ($totalRows_rs_carrinho == 0)
   {



$query_rs_produto = "SELECT * FROM produto WHERE id_produtos = '".$produto."'";
   $rs_produto = mysql_query($query_rs_produto, $conn) or die(mysql_error());
   $row_rs_produto = mysql_fetch_assoc($rs_produto);
   $totalRows_rs_produto = mysql_num_rows($rs_produto);


   if ($totalRows_rs_produto > 0)
   {
   $registro_produto = mysql_fetch_assoc($rs_produto);

   $add_sql = "INSERT INTO carrinho (id_carrinho, quantidade,sessao,cliente_id_cliente, produto_id_produtos)
   VALUES('','".$row_rs_produto['quantidade']."','".session_id()."','".$row_rs_produto['cliente_id_cliente']."','".$row_rs_produto['produto_id_produtos']."')";
$rs_produto_add = mysql_query($add_sql, $conn) or die(mysql_error());
   }
   }
   }
   }
   }


   if ($acao == "excluir")
   {

   if ($produto != '')
   {
   if (is_numeric($produto))
   {

   $produto = addslashes(htmlentities($produto));
   $query_rs_car = "SELECT * FROM carrinho WHERE produto_id_produtos = '".$produto."' AND sessao = '".session_id()."'";
   $rs_car = mysql_query($query_rs_car, $conn) or die(mysql_error());
   $row_rs_carrinho = mysql_fetch_assoc($rs_car);
   $totalRows_rs_car = mysql_num_rows($rs_car);

   if ($totalRows_rs_car > 0)
   {
   $sql_carrinho_excluir = "DELETE FROM carrinho WHERE produto_id_produtos = '".$produto."' AND sessao = '".session_id()."'";
   $exec_carrinho_excluir = mysql_query($sql_carrinho_excluir, $conn) or die(mysql_error());
   }
   }
   }
   }

   if ($acao == "modifica")
   {
   $quant = $_POST['quantidade'];
   if (is_array($quant))
   {
   foreach($quant as $produto => $quantidade)
   {
   if(is_numeric($produto) && is_numeric($quantidade))
   {
   $sql_modifica = "UPDATE carrinho SET quantidade = '$quantidade' WHERE produto_id_produtos = '$produto' AND sessao = '".session_id()."'";
   $rs_modifica = mysql_query($sql_modifica, $conn) or die(mysql_error());
   }
   }
   }

   }
   ?>




Compartilhar este post


Link para o post
Compartilhar em outros sites

Ta como resolvido, mas o problema não está resolvido..

 

 

O Select ta funcionando, mas o insert não.

Não sei o que esta errado.

se alguem puder ajudar

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.