Ir para conteúdo
Fórum Script Brasil
  • 0

tratar chave estrangeira


Rafael-Moran

Pergunta

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 para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...