Loumir
Messages postés9Date d'inscriptiondimanche 25 mai 2003StatutMembreDernière intervention28 février 2008
-
27 févr. 2008 à 16:26
Loumir
Messages postés9Date d'inscriptiondimanche 25 mai 2003StatutMembreDernière intervention28 février 2008
-
28 févr. 2008 à 17:57
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
nicomilville
Messages postés3472Date d'inscriptionlundi 16 juillet 2007StatutMembreDernière intervention28 février 201436 27 févr. 2008 à 16:32
Salut,
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 !!!
Evangun
Messages postés1980Date d'inscriptiondimanche 20 février 2005StatutMembreDernière intervention24 septembre 20124 27 févr. 2008 à 16:44
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.
Loumir
Messages postés9Date d'inscriptiondimanche 25 mai 2003StatutMembreDernière intervention28 février 2008 27 févr. 2008 à 17:57
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
Ca n'est pas très explicite !
LoumirLoumir
Vous n’avez pas trouvé la réponse que vous recherchez ?
Loumir
Messages postés9Date d'inscriptiondimanche 25 mai 2003StatutMembreDernière intervention28 février 2008 27 févr. 2008 à 19:52
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 :
Evangun
Messages postés1980Date d'inscriptiondimanche 20 février 2005StatutMembreDernière intervention24 septembre 20124 28 févr. 2008 à 14:45
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 :)
à+
Loumir
Messages postés9Date d'inscriptiondimanche 25 mai 2003StatutMembreDernière intervention28 février 2008 28 févr. 2008 à 17:57
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.