Bonjour,
J'apprend en construisant et à chaque saut de puce je tombe dans un gouffre ! Pouvez-vous me sortir de celui-là ?
J'ai trois tables la troisième (livres) utilisant des données de deux autres (editeurs et matieres)
CREATE TABLE `livres` (
`id` tinyint(5) NOT NULL auto_increment,
`id_matiere` tinyint(5) NOT NULL default '0',
`titre` varchar(50) NOT NULL default '',
`id_editeur` tinyint(5) NOT NULL default '0',
`annee` varchar(40) NOT NULL default '',
`reference` varchar(10) NOT NULL default '',
`isbn` varchar(10) NOT NULL default '',
`commentaires` tinytext NOT NULL,
PRIMARY KEY (`id`),
KEY `id_matiere` (`id_matiere`),
KEY `id_editeur` (`id_editeur`)
) TYPE=InnoDB AUTO_INCREMENT=1 ;
-- Contraintes pour la table `livres`
ALTER TABLE `livres`
ADD CONSTRAINT `livres_ibfk_1` FOREIGN KEY (`id_matiere`) REFERENCES `matieres` (`id_matiere`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `livres_ibfk_2` FOREIGN KEY (`id_editeur`) REFERENCES `editeurs` (`id_editeur`) ON DELETE CASCADE ON UPDATE CASCADE;
Je n'arrive pas à enregistrer mes données avec
msql_query("INSERT INTO livres VALUES ('','$id_matiere',$titre','$id_editeur',$annee','',$reference','$isbn','$commentaires')");
Je pense que c'est dû à ma table livres qui ne doit pas être configurée correctement car toutes mes variables existent bien (confirmées par echo).
Qu'est-ce que je n'ai pas compris ?
Merci beaucoup
Met : msql_query("INSERT INTO livres VALUES ('','$id_matiere',$titre','$id_editeur',$annee','',$reference','$isbn','$commentaires')") or die(mysql_error());
et ensuite si tu obtient une erreur met la nous, et peut être que l'on y verra plus clair !!!
Tu as aussi fait une faute là : eur',$annee','',$ref
tu devrais aussi préciser dans quels champ tu insères tes valeurs, sinon dès que tu rajouteras un champ dans ta table, faudra refaire toutes tes requêtes.
Merci pour vos réponses et vos conseils, j'en tiendrai compte.
J'ai corrigé le champ en trop. Les tables et champs liés existent bien (les listes déroulantes issues des tables fonctionnent)
Il reste une erreur : You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '18ème siècle','1',2007',128327','','')' at line 1
Merci je l'avais pourtant lu et relue cette ligne !
Cette fois c'est bien ma table qui pose problème : "Cannot add or update a child row: a foreign key constraint fails"
La table principale fait référence aux clés étrangères. Les tables annexes doivent-elles également en parler ? Ce qui n'est pas le cas dans mon exemple :
Hello, ta table est censée s'appeler editeurs d'après ta clé étrangère, pas peep_editeurs.
Fais attention à ce que tu fais, et relis-toi 2 fois avant de poser tes questions :)
à+
J'ai renomé mes tables pour présenter mon problème sur ce forum mais j'ai laissé passé celle là. Dans mon projets les noms sont corrects. J'ai bien entendu vérifié.
Merci quand même.