Erreur SQL a l'insersion table relationnelles

Fermé
glodybiss Messages postés 440 Date d'inscription vendredi 6 juin 2008 Statut Membre Dernière intervention 29 juillet 2015 - 21 déc. 2011 à 09:00
NDOUKI Messages postés 110 Date d'inscription mardi 29 juillet 2008 Statut Membre Dernière intervention 4 novembre 2013 - 21 déc. 2011 à 11:39
Bonjour tous !

Voici l'erreur sql que je reçoit lors de l'insertion des données dans ma table.

Cannot add or update a child row: a foreign key constraint fails ('cybernet'.'site', CONSTRAINT 'fk_site_provider' FOREIGN KEY ('idprovider') REFERENCES 'provider' ('id') ON DELETE NO ACTION ON UPDATE NO ACTION)




A voir également:

2 réponses

Melooo Messages postés 1405 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 mars 2013 84
21 déc. 2011 à 09:05
Salut,
Une erreur dans tes clés étrangères de tes tables, mais sans requête et plus d'explication, j'peux pas t'en dire plus...
0
glodybiss Messages postés 440 Date d'inscription vendredi 6 juin 2008 Statut Membre Dernière intervention 29 juillet 2015 9
21 déc. 2011 à 09:11
Voici ma requête, j'insère dans la table site

$sql = 'INSERT INTO 'site'  ('id' ,'idsiteinterne' ,'idsiteprovider','site_name' ,'dateactivation' ,'dateinstallation' ,'adressesite' ,'installerpar' ,'idclient' ,'adresseIP' ,'adresseIPmanage' ,'emailsite' ,'idprovider' ,'service' ,'idetatsite' ,'idpays' ,'province' ,'telephone' ,'observation' ,'datecreation') VALUES (NULL, "'.mysql_escape_string($_POST['idsiteinterne']).'", 
"'.mysql_escape_string($_POST['idsiteprovider']).'","'.mysql_escape_string($_POST['site_name']).'",
			 "'.mysql_escape_string($_POST['dateinstallation']('d-m-Y')).'" , "'.mysql_escape_string($_POST['dateactivation']('d-m-Y')).'", 
			 "'.mysql_escape_string($_POST['adressesite']).'",  "'.mysql_escape_string($_POST['installerpar']).'",  "'.mysql_escape_string($_POST['idclient']).'",  
			 "'.mysql_escape_string($_POST['adresseIP']).'", "'.mysql_escape_string($_POST['adresseIPmanage']).'", 
			 "'.mysql_escape_string($_POST['emailsite']).'", "'.mysql_escape_string($_POST['idprovider']).'","'.mysql_escape_string($_POST['service']).'",
			 "'.mysql_escape_string($_POST['province']).'", "'.mysql_escape_string($_POST['idetatsite']).'",
			 "'.mysql_escape_string($_POST['province']).'", "'.mysql_escape_string($_POST['telephone']).'",
			 "'.mysql_escape_string($_POST['observation']).'", "'.date('Y-m-d h:i:s').'")'; 
                mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error()); 
0
Melooo Messages postés 1405 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 mars 2013 84
21 déc. 2011 à 09:20
Les clés étrangères sont idsiteinterne et idsiteprovider ?
0
glodybiss Messages postés 440 Date d'inscription vendredi 6 juin 2008 Statut Membre Dernière intervention 29 juillet 2015 9
21 déc. 2011 à 10:12
Je viens de mettre de préciser les clés primaires. Merci !
0
NDOUKI Messages postés 110 Date d'inscription mardi 29 juillet 2008 Statut Membre Dernière intervention 4 novembre 2013 12
Modifié par NDOUKI le 21/12/2011 à 09:47
slt,
si ton id est auto-incrément, tu n'as pas besoin de l'insérer.
donc commence par enlever ton id et le null

et ensuite précise nous tes clés primaires et étrangères
0
glodybiss Messages postés 440 Date d'inscription vendredi 6 juin 2008 Statut Membre Dernière intervention 29 juillet 2015 9
21 déc. 2011 à 10:12
Voici mes clés étrangères:

KEY 'fk_site_provider' ('idprovider'),
  KEY 'fk_site_clients' ('idclient'),
  KEY 'fk_site_etat_site' ('idetatsite'),
  KEY 'fk_site_pays' ('idpays')


-- Contraintes pour la table 'site'
--
ALTER TABLE 'site'
  ADD CONSTRAINT 'fk_site_clients' FOREIGN KEY ('idclient') REFERENCES 'client' ('id') ON DELETE NO ACTION ON UPDATE NO ACTION,
  ADD CONSTRAINT 'fk_site_etat_site' FOREIGN KEY ('idetatsite') REFERENCES 'etat_site' ('id') ON DELETE NO ACTION ON UPDATE NO ACTION,
  ADD CONSTRAINT 'fk_site_pays' FOREIGN KEY ('idpays') REFERENCES 'pays' ('id') ON DELETE NO ACTION ON UPDATE NO ACTION,
  ADD CONSTRAINT 'fk_site_provider' FOREIGN KEY ('idprovider') REFERENCES 'provider' ('id') ON DELETE NO ACTION ON UPDATE NO ACTION;
0
NDOUKI Messages postés 110 Date d'inscription mardi 29 juillet 2008 Statut Membre Dernière intervention 4 novembre 2013 12
21 déc. 2011 à 11:39
ce que je vais te dire, c'est de bien vérifier l'ordre d'insertion des enregistrement et ensuite de faire les recherches sur la fonction last_insert_id() qui te permet de recupérer plus facilement tes clés primaires auto-increment
0