Ir para conteúdo

POWERED BY:

Arquivado

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

Rafael Perucchi

Erro ao cadastrar tabela associativa

Recommended Posts

...
$sql = "INSERT INTO cliente (nmcliente, dtnascimento, dcendereco, enestadocivil, ensexo, txcomentario, dtcadastro)
                       VALUES ('$_POST[txt_nome]','" . dataDeNasc() . "','$_POST[txt_endereco]','$_POST[slt_civil]','$_POST[rdo_sexo]','$_POST[txa_comentario]','" . dataDeCadastro() . "')";
               if (!mysql_query($sql, $con)) {
                   die('Error Cliente: ' . mysql_error());
               }
               if (isset($_POST["chk_hobbies"])) {
                   for ($i = 0; $i < count($_POST["chk_hobbies"]); $i++) {

                       $nome = $_POST["chk_hobbies"][$i];

                       $sql2 = "INSERT INTO hoobies (nmhoobies) 
                               VALUES ('$nome')";

                       if (!mysql_query($sql2, $con)) {
                           die('Error Hobbies: ' . mysql_error());
                       }
                   }
                   $sql3 = "INSERT INTO hoobies_cliente (idhoobies,idcliente)
                               VALUES ('test.hoobies.idhoobies','test.idcliente.idcliente')";
                   if (!mysql_query($sql3, $con)) {
                       die('Error hobbies_cliente: ' . mysql_error());
                   }
               }

Error hobbies_cliente: Cannot add or update a child row: a foreign key constraint fails (`test`.`hoobies_cliente`, CONSTRAINT `fk_hoobies_has_cliente_hoobies1` FOREIGN KEY (`idhoobies`) REFERENCES `hoobies` (`idhoobies`) ON DELETE NO ACTION ON UPDATE NO ACTION)

 

Dados estão na tabela cliente e hobbies estão populados.

 

Gostaria que fosse feito isso:

test.hoobies_cliente.idhobbies <= test.hoobies.idhoobies

test.hoobies_cliente.idcliente <= test.cliente.idcliente

 

Alguma ajuda????

Compartilhar este post


Link para o post
Compartilhar em outros sites

A tabela hoobies_cliente tem um campo que é FK em hoobies

O campo idhoobies de hoobies_cliente não tem o correspondente em hoobies.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Motta, script para criação das tabelas está assim:

Pelo que eu vejo aqui idhoobies tem correspondente em hoobies, estou errado???

POsso mandar a o script inteiro se precisar.

Obrigado.

 

 

CREATE TABLE IF NOT EXISTS hoobies_cliente (
 idhoobies int(11) NOT NULL,
 idcliente int(11) NOT NULL,
 PRIMARY KEY  (idhoobies,idcliente),
 KEY fk_hoobies_has_cliente_cliente1 (idcliente)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

ALTER TABLE hoobies_cliente
 ADD CONSTRAINT fk_hoobies_has_cliente_cliente1 FOREIGN KEY (idcliente) REFERENCES cliente (idcliente) ON DELETE NO ACTION ON UPDATE NO ACTION,
 ADD CONSTRAINT fk_hoobies_has_cliente_hoobies1 FOREIGN KEY (idhoobies) REFERENCES hoobies (idhoobies) ON DELETE NO ACTION ON UPDATE NO ACTION;
SET FOREIGN_KEY_CHECKS=1;

Compartilhar este post


Link para o post
Compartilhar em outros sites

E a tabela hobbies ?

Qual o tipo de hobbies.idhoobies ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

idhoobies int(11) NOT NULL auto_increment

 

SQL script completo:

 

SET FOREIGN_KEY_CHECKS=0;
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

DROP TABLE IF EXISTS cliente;
CREATE TABLE IF NOT EXISTS cliente (
 idcliente int(11) NOT NULL auto_increment,
 nmcliente varchar(100) NOT NULL,
 dtnascimento date NOT NULL,
 dcendereco varchar(200) NOT NULL,
 enestadocivil enum('J','C','S','V','D') NOT NULL,
 ensexo enum('F','M') NOT NULL,
 txcomentario text,
 dtcadastro date NOT NULL,
 PRIMARY KEY  (idcliente)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

DROP TABLE IF EXISTS hoobies;
CREATE TABLE IF NOT EXISTS hoobies (
 idhoobies int(11) NOT NULL auto_increment,
 nmhoobies varchar(50) NOT NULL,
 PRIMARY KEY  (idhoobies)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

DROP TABLE IF EXISTS hoobies_cliente;
CREATE TABLE IF NOT EXISTS hoobies_cliente (
 idhoobies int(11) NOT NULL,
 idcliente int(11) NOT NULL,
 PRIMARY KEY  (idhoobies,idcliente),
 KEY fk_hoobies_has_cliente_cliente1 (idcliente)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

ALTER TABLE hoobies_cliente
 ADD CONSTRAINT fk_hoobies_has_cliente_cliente1 FOREIGN KEY (idcliente) REFERENCES cliente (idcliente) ON DELETE NO ACTION ON UPDATE NO ACTION,
 ADD CONSTRAINT fk_hoobies_has_cliente_hoobies1 FOREIGN KEY (idhoobies) REFERENCES hoobies (idhoobies) ON DELETE NO ACTION ON UPDATE NO ACTION;

SET FOREIGN_KEY_CHECKS=1;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo que conheço de Banco está tudo certo, só se MySql não permite isto para auto_increment.

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.