Erreur SQL a l'insersion table relationnelles

glodybiss Messages postés 440 Date d'inscription   Statut Membre Dernière intervention   -  
NDOUKI Messages postés 110 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   84
 
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   Statut Membre Dernière intervention   9
 
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   Statut Membre Dernière intervention   84
 
Les clés étrangères sont idsiteinterne et idsiteprovider ?
0
glodybiss Messages postés 440 Date d'inscription   Statut Membre Dernière intervention   9
 
Je viens de mettre de préciser les clés primaires. Merci !
0
NDOUKI Messages postés 110 Date d'inscription   Statut Membre Dernière intervention   12
 
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   Statut Membre Dernière intervention   9
 
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   Statut Membre Dernière intervention   12
 
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