Jump to content
Fórum Script Brasil
  • 0

tratar chave estrangeira


Rafael-Moran

Question

Bom minha divida é com tratar a chave estrangeira.

Bom é o seguinte.

tenho duas tabelas,

Cliente e carrinho

onde o Id carrinho é chave estrangeira da tabela cliente.

o id_carrinho, faz referencia a tabela carrinho.

com mas minha duvida é como tratar a chave estrangeira.

sei que a chave estrangeira serve para fazer a ligação de uma tabela com a outra.

mas não intendi ate agora que dados ela recebe, como eu tenho que tratar ela.

E no meu php, quando estou dando um insert nela tabela cliente, eu devo inserir algum dado na chave estrangeira.

Espero estar sendo claro na minha duvida.

Abrigado pela atenção.

Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 0

Vou tentar me explicar melhor.

Possuo essa tabela, onde ficara gravada o cadastro do cliente.

-- Banco de Dados: `mydb`

-- Estrutura da tabela `cliente`

--

CREATE TABLE IF NOT EXISTS `cliente` (

`id_cliente` int(255) NOT NULL AUTO_INCREMENT,

`nome_cli` varchar(500) NOT NULL,

`telefone_cli` varchar(100) NOT NULL,

`endereco_cli` varchar(200) NOT NULL,

`bairro_cli` varchar(200) NOT NULL,

`numero_cli` varchar(45) NOT NULL,

`complemento_cli` varchar(45) NOT NULL,

`email_cli` varchar(200) NOT NULL,

`senha_cli` varchar(45) NOT NULL,

`pergunta_cli` varchar(500) NOT NULL,

`resposta` varchar(500) NOT NULL,

`carrinho_id_carrinho` int(11) NOT NULL,

PRIMARY KEY (`id_cliente`),

KEY `fk_cliente_carrinho1` (`carrinho_id_carrinho`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=9 ;

--

-- Restrições para as tabelas dumpadas

--

--

-- Restrições para a tabela `cliente`

--

ALTER TABLE `cliente`

ADD CONSTRAINT `fk_cliente_carrinho1` FOREIGN KEY (`carrinho_id_carrinho`) REFERENCES `carrinho` (`id_carrinho`) ON DELETE NO ACTION ON UPDATE NO ACTION;

No PHP eu tenho assim

$sql = "insert into cliente(id_cliente,nome_cli,telefone_cli,endereco_cli,bairro_cli,numero_cli,complemento_cli,email_cli,senha_cli,pergunta_cli,resposta_cli,) values ('','$nome','$telefone','$endereco','$bairro','$numero','$bloco','$email','$senha','$pergunta','$resposta','')";

$consulta = mysql_query($sql);

if($consulta) {

echo "<script>alert('Cadastrado com sucesso'); window.location.href='../index.html'; </script>";;

exit;

}else{

echo"<script>alert('Não foi possivel efetuar o seu cadastro tente mais tarde pode ser um problema no servido!'); window.location.href='../home/home.php; </script>";;

exit;

}

Acredito que o meu insert esteja certo, mas não esta inserindo os dados no banco de dados, e não me retorna nenhum erro, a pagina simplesmente fica braca.

Acredito que seja algum problema na minha chave estrangeira, eu acho em nenhum lugar como eu devo tratar a chave estrangeira no meu php.

Link to comment
Share on other sites

  • 0

Oi 'Rafael-Moran',

Tente entender melhor assim:

1 cliente pode ter 0 ou muitos carrinhos, certo?

0 carrinhos porque ele acabou de fazer o cadastro e ainda não faz nenhuma compra e muitos (de 1 a infinito) serão as quantidades de compras (carrinhos) efetuados de cada vez.

Então, é a tabela carrinho que deverá guardar o ID do cliente e não o inverso como você fez.

Em tese, sua lógica ficará assim:

Quando um cliente faz um cadastro, ele não tem a obrigatoriedade de fazer uma compra inicial. Os dados do cliente são os que caracterizam o cliente como pessoa. Então somente a tabela cliente é gravada

Quando o cliente vai fazer uma compra, ele "pega" um carrinho (quer dizer que cada compra gravada na tabela carrinho conterá o id do cliente)

Quando você for fechar a compra do carrinho, deverá somar todos os valores daquele cliente.

É isso.

Se você tiver mais dúvidas poste-as aqui.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...