Como inserir dados na tabela da chave estrangeira?

19/10/2018

0

Boa tarde, eu sou iniciante na programação/banco de dados, e tenho que fazer um trabalho do meu curso, mas não estou conseguindo.

Então eu tenho uma tabela chamada ''''cliente'''', e outra chamada ''''movimentacao'''', onde em ambas tabelas tem a coluna ''''cpf'''', que é uma chave estrangeira pois é o mesmo CPF do cliente e da movimentação...

Mas eu queria saber como posso adicionar mais colunas na tabela movimentacao, mas colunas de 1 só cliente.. Porque só consegui adicionar apenas uma linha de cada cliente na tabela movimentacoes.

Olhe o print da tabela movimentacoes:

Então eu queria por exemplo, adicionar novas linhas de um cliente, por exemplo, do cliente com o CPF tal, queria adicionar varias movimentaçoes de saldo desse cliente... Alguém pode me dar uma luz de como fazer?

Eu estou tentando fazer isso por PHP, olhe meu arquivo cadastro.php:

<?php
include "conect.php";

$cpf = $_POST[''''cpf''''];

$sql = mysql_query("INSERT INTO movimentacao(saldo) values (''''$_POST[saldo]'''' WHERE cpf = ''''$cpf'''' )" );

if($sql){
echo "Dados cadastrados com sucesso! <br/><a href=''''index.html''''>Volte para aba de Cadastro</a> ";
}else{
echo "Falha!" . mysql_error();
}

mysql_close();
?>

Quando eu envio pelo form da minha página HTML e ele vai pra cadastro.php, da o error: Falha!You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''''WHERE cpf = ''''05441993162'''' )'''' at line 1

Por isso acho que eu fiz algo errado no cadastro.php

Alguém pode me dar uma luz?

Gratidao
Aleandra

Aleandra

Responder

Posts

19/10/2018

Aleandra

Desculpe, esqueci de por o print: https://i.imgur.com/TlZ235H.png
Responder

19/10/2018

Fernando C

nao existe inserir com where;
ao inserir uma nova movimentacao vc devera inserir uma nova linha com a quantia e tambem o cpf do cliente;
ex:
insert into movimentacao(saldo, cpf) values($saldo, $cpf)
é um novo registro
(recomendo tb inserir a data dessa movimentacao)
a proposito, as funcoes mysql* estao sendo removidas; pesquise sobre
mysqli ou PDO
Responder

19/10/2018

Aleandra

Oi!
Eu tentei já como vc falou, colocar a movimentação e o CPF do cliente sem where.
Olhe como ficou no php:
$sql = mysql_query("INSERT INTO movimentacao(saldo, cpf) values ('$_POST[saldo]', $_POST[cpf] )" );

E ao tentar cadastrar uma movimentação, olhe o erro apresentado na pagina cadastro.php:
Falha!Cannot add or update a child row: a foreign key constraint fails (`aula_01`.`movimentacao`, CONSTRAINT `movimentacao_ibfk_1` FOREIGN KEY (`cpf`) REFERENCES `conta_corrente` (`cpf`))

Ah sim vou colocar depois o horário / data da movimentação
Responder

19/10/2018

Aleandra

Ops, descobri um erro, o $_POST[cpf] estava sem aspas simples, por isso tava dando o erro...

Mas agora coloquei as aspas simples, e aparece outro erro:
Falha!Duplicate entry '05441993131' for key 'PRIMARY'

05441993131 seria o CPF que coloquei no form, e o CPF nessa tabela é uma chave primária, então não tem como prosseguir colocar uma nova linha na tabela movimentação com esse cpf?
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar