Ir para conteúdo

POWERED BY:

Arquivado

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

Moran

como lidar com chave estrangeira no php

Recommended Posts

Vou tentar explicar o que ta acontecendo.

 

Possuo uma tabela chamada cliente, 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,comp
lemento_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.

 

se eu der um echo, aparece o que eu digitei no formulario. o problema ta no insert.

 

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

 

Agradeço a Toda juda que vier e aqueles que tentaram me ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, você errou na modelagem.

O correto é que "carrinho" tenha uma chave-estrangeira relacionada a cliente, pois um cliente pode ter vários carrinhos, mas cada carrinho tem um só cliente...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pior que passei a noite pensando nisso. vou mudar aqui , daqui a pouco ja respondo se resolveu ..

 

Muito obrigado pela força. (Y)

 

Bom resolveu o problema dessa tabela mas o problema foi para a outra, não consigo gravar nada na tabela carrinho.

 

#1452 - Cannot add or update a child row: a foreign key constraint fails (`mydb2`.`carrinho`, CONSTRAINT `fk_carrinho_produtos1` FOREIGN KEY (`produtos_id_produtos`) REFERENCES `produto` (`id_produtos`) ON DELETE NO ACTION ON UPDATE NO ACTION)

 

Bom se algum puder me ajudar fico muito grato.

 

Bom acredito que eu tenha resolvido o meu problema,mas gostaria de conta com a esperiencia de vocês.

Peço que deem uma olhada no meu banco de dados, e caso achem agum problema, favor fiquem a vontade de me responder.

 

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;

SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;

SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';



CREATE SCHEMA IF NOT EXISTS `mydb3` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;

USE `mydb3` ;



-- -----------------------------------------------------

-- Table `mydb3`.`adm`

-- -----------------------------------------------------

CREATE  TABLE IF NOT EXISTS `mydb3`.`adm` (

 `id_adm` INT NOT NULL AUTO_INCREMENT ,

 `login_adm` VARCHAR(45) NOT NULL ,

 `senha_adm` VARCHAR(45) NOT NULL ,

 PRIMARY KEY (`id_adm`) )

ENGINE = InnoDB

DEFAULT CHARACTER SET = utf8

COLLATE = utf8_general_ci;





-- -----------------------------------------------------

-- Table `mydb3`.`sac`

-- -----------------------------------------------------

CREATE  TABLE IF NOT EXISTS `mydb3`.`sac` (

 `id_sac` INT NOT NULL AUTO_INCREMENT ,

 `nome_sac` VARCHAR(45) NOT NULL ,

 `email_sac` VARCHAR(200) NOT NULL ,

 `telefone_sac` VARCHAR(45) NOT NULL ,

 `comentario_sac` VARCHAR(500) NOT NULL ,

 PRIMARY KEY (`id_sac`) )

ENGINE = InnoDB

DEFAULT CHARACTER SET = utf8

COLLATE = utf8_general_ci;





-- -----------------------------------------------------

-- Table `mydb3`.`cliente`

-- -----------------------------------------------------

CREATE  TABLE IF NOT EXISTS `mydb3`.`cliente` (

 `id_cliente` INT NOT NULL AUTO_INCREMENT ,

 `nome_cli` INT NOT NULL ,

 `telefone_cli` INT 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(300) NOT NULL ,

 `senha_cli` VARCHAR(45) NOT NULL ,

 `pergunta_cli` INT NOT NULL ,

 `resposta_cli` VARCHAR(200) NOT NULL ,

 PRIMARY KEY (`id_cliente`) )

ENGINE = InnoDB

DEFAULT CHARACTER SET = utf8

COLLATE = utf8_general_ci;





-- -----------------------------------------------------

-- Table `mydb3`.`produto`

-- -----------------------------------------------------

CREATE  TABLE IF NOT EXISTS `mydb3`.`produto` (

 `id_produtos` INT NOT NULL AUTO_INCREMENT ,

 `produto` VARCHAR(500) NOT NULL ,

 `descricao` VARCHAR(500) NOT NULL ,

 `valor` VARCHAR(20) NOT NULL ,

 `especie` VARCHAR(100) NOT NULL ,

 `img` BLOB NOT NULL ,

 `principal` VARCHAR(45) NOT NULL ,

 `adm_id_adm` INT NOT NULL ,

 PRIMARY KEY (`id_produtos`) ,

 INDEX `fk_produto_adm` (`adm_id_adm` ASC) ,

 CONSTRAINT `fk_produto_adm`

   FOREIGN KEY (`adm_id_adm` )

   REFERENCES `mydb3`.`adm` (`id_adm` )

   ON DELETE NO ACTION

   ON UPDATE NO ACTION)

ENGINE = InnoDB

DEFAULT CHARACTER SET = utf8

COLLATE = utf8_general_ci;





-- -----------------------------------------------------

-- Table `mydb3`.`carrinho`

-- -----------------------------------------------------

CREATE  TABLE IF NOT EXISTS `mydb3`.`carrinho` (

 `id_carrinho` INT NOT NULL AUTO_INCREMENT ,

 `quantidade` INT NOT NULL ,

 `sessao` TEXT NOT NULL ,

 `cliente_id_cliente` INT NOT NULL ,

 `produto_id_produtos` INT NOT NULL ,

 PRIMARY KEY (`id_carrinho`) ,

 INDEX `fk_carrinho_cliente` (`cliente_id_cliente` ASC) ,

 INDEX `fk_carrinho_produto1` (`produto_id_produtos` ASC) ,

 CONSTRAINT `fk_carrinho_cliente`

   FOREIGN KEY (`cliente_id_cliente` )

   REFERENCES `mydb3`.`cliente` (`id_cliente` )

   ON DELETE NO ACTION

   ON UPDATE NO ACTION,

 CONSTRAINT `fk_carrinho_produto1`

   FOREIGN KEY (`produto_id_produtos` )

   REFERENCES `mydb3`.`produto` (`id_produtos` )

   ON DELETE NO ACTION

   ON UPDATE NO ACTION)

ENGINE = InnoDB

DEFAULT CHARACTER SET = utf8

COLLATE = utf8_general_ci;







SET SQL_MODE=@OLD_SQL_MODE;

SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;

SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;




 

 

Esse é o banco de dados que eu estou usando.

 

qualquer coisa só comentar que eu respondo em seguida.

 

Muito obrigado a todos aqueles que ajudaram, seja diretamente ou indiretamente.

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.